为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 使用数据透视表选择记录

Laravel 使用数据透视表选择记录

PHP
慕森王 2023-10-21 16:09:34
我的口才有点问题。我有3张桌子。Users、phrases、 和phrase_user。短语用户包含列:id, phrase_id, user_id 例如,我需要使用数据透视表选择短语。 这个使用 SQL 的操作将是这样的......SELECT phrase FROM phrases LEFT JOIN phrase_user ON  phrases.id = phrase_user.phrase_idLEFT JOIN users ON phrase_user.user_id = $userId这是我在控制器中的索引函数$phrases = DB::table('phrases')->orderBy('id','desc')->Paginate(5);$user = Auth::user();        return view('pages.phrases.index')->with(['phrases' => $phrases, 'user' => $user]);我也在模型中编写了这些函数...短语模型:public function users(){    return $this->belongsToMany('App\User')->withTimestamps();}用户模型:public function phrases(){    return $this->belongsToMany('App\Phrase')->withTimestamps();}在这种情况下,分页器无法正常工作,因为$phrases = DB::table('phrases')->orderBy('id','desc')->Paginate(5); 存在一些问题。结论:我只需要在短语页面中显示我的短语。每个用户都必须有自己的短语。
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

$userId = 2;


$phrases = DB::table('phrases')->whereHas('users', function ($q) use ($userId) {

    $q->whereId($userId);

})->orderBy('id','desc')->Paginate(5);


$user = Auth::user();


return view('pages.phrases.index')->with(['phrases' => $phrases, 'user' => $user]);


查看完整回答
反对 回复 2023-10-21
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

尝试使用小写分页

$phrases = DB::table('phrases')->orderBy('id','desc')->paginate(5);


查看完整回答
反对 回复 2023-10-21
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信