首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于收藏笑话的桌子星座

问用于收藏笑话的桌子星座
EN

Stack Overflow用户
提问于 2015-04-10 01:13:40
回答 2查看 67关注 0票数 0

我正在利用我的空闲时间开发一个小的网络应用程序,现在我想要有一个可以被用户喜欢的笑话。

我的表格是:

代码语言:javascript
复制
----------------
| jokes        |
----------------
| id
| author_id
| content

----------------
| favorites    |
----------------
| id
| joke_id
| user_id

(当然还有更多像users表这样的表,但这不是必需的)

我现在不知道如何在模型中设置关系。我的目标是检索登录用户喜欢的所有笑话,例如:

代码语言:javascript
复制
$favorites = Joke::wherePivot('user_id', Auth::user()->id)->get();

这样我就可以像使用笑话一样访问属性:

代码语言:javascript
复制
$jokes = Joke::all();

在刀片模板引擎中

代码语言:javascript
复制
@foreach($jokes as $joke)
  {{ $joke->content }}
@enndforeach

有什么最佳实践吗?我运行的是Laravel框架4.2.17版。

EN

回答 2

Stack Overflow用户

发布于 2015-04-10 01:22:35

我将创建收藏夹表,如下所示:

joke_id | user_id

将主键放在两个字段上。如果您想让它“完美”,在各个字段上放置一个单独的外键,分别指向joke和user表。

每次登录的用户收藏一个笑话时,存储joke_id和user_id。

检索

代码语言:javascript
复制
SELECT j.*
FROM jokes j 
INNER JOIN favorites f ON j.id=f.joke_id
WHERE f.user_id= $userId

使用Laravel查询构建器的:

代码语言:javascript
复制
DB::table('jokes')
            ->join('favorites', 'jokes.id', '=', 'favorites.joke_id')
            ->where('favorites.user_id', '=', $userId)
            ->get();
票数 0
EN

Stack Overflow用户

发布于 2015-04-10 01:22:59

假设userid =u0001,则可以使用mysql查询

代码语言:javascript
复制
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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29544874

复制
相关文章

相似问题

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