我正在利用我的空闲时间开发一个小的网络应用程序,现在我想要有一个可以被用户喜欢的笑话。
我的表格是:
----------------
| jokes |
----------------
| id
| author_id
| content
----------------
| favorites |
----------------
| id
| joke_id
| user_id(当然还有更多像users表这样的表,但这不是必需的)
我现在不知道如何在模型中设置关系。我的目标是检索登录用户喜欢的所有笑话,例如:
$favorites = Joke::wherePivot('user_id', Auth::user()->id)->get();这样我就可以像使用笑话一样访问属性:
$jokes = Joke::all();在刀片模板引擎中
@foreach($jokes as $joke)
{{ $joke->content }}
@enndforeach有什么最佳实践吗?我运行的是Laravel框架4.2.17版。
发布于 2015-04-10 01:22:35
我将创建收藏夹表,如下所示:
joke_id | user_id
将主键放在两个字段上。如果您想让它“完美”,在各个字段上放置一个单独的外键,分别指向joke和user表。
每次登录的用户收藏一个笑话时,存储joke_id和user_id。
检索
SELECT j.*
FROM jokes j
INNER JOIN favorites f ON j.id=f.joke_id
WHERE f.user_id= $userId使用Laravel查询构建器的:
DB::table('jokes')
->join('favorites', 'jokes.id', '=', 'favorites.joke_id')
->where('favorites.user_id', '=', $userId)
->get();发布于 2015-04-10 01:22:59
假设userid =u0001,则可以使用mysql查询
SELECT j.id,j.author_id,j.Content,f.user_id
FROM jokes j
JOIN favorites f
ON j.id=f.jokeid
WHERE f.user_id='u0001'https://stackoverflow.com/questions/29544874
复制相似问题