首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有枢轴表的Laravel选择记录

具有枢轴表的Laravel选择记录
EN

Stack Overflow用户
提问于 2020-08-19 09:42:11
回答 2查看 304关注 0票数 0

我对口才有点意见。我有三张桌子。Usersphrasesphrase_user。短语用户包含列:id, phrase_id, user_id,我需要选择带有枢轴表的短语。使用SQL的操作将类似于.

代码语言:javascript
复制
SELECT phrase FROM phrases 
LEFT JOIN phrase_user ON  phrases.id = phrase_user.phrase_id
LEFT JOIN users ON phrase_user.user_id = $userId

这是我在控制器中的索引函数

代码语言:javascript
复制
$phrases = DB::table('phrases')->orderBy('id','desc')->Paginate(5);
$user = Auth::user(); 
       
return view('pages.phrases.index')->with(['phrases' => $phrases, 'user' => $user]);

我也用模型写了这些函数..。短语模型:

代码语言:javascript
复制
public function users()
{
    return $this->belongsToMany('App\User')->withTimestamps();
}

用户模型:

代码语言:javascript
复制
public function phrases()
{
    return $this->belongsToMany('App\Phrase')->withTimestamps();
}

在这种情况下,分页器无法正常工作,因为$phrases = DB::table('phrases')->orderBy('id','desc')->Paginate(5);存在一些问题。

总结:我只需要在短语页面显示我的短语。每个用户都必须有自己的短语。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-19 09:51:25

代码语言:javascript
复制
$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]);
票数 0
EN

Stack Overflow用户

发布于 2020-08-19 09:48:46

尝试使用小写分页

代码语言:javascript
复制
$phrases = DB::table('phrases')->orderBy('id','desc')->paginate(5);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63484190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档