【发布时间】:2023-04-03 06:53:01
【问题描述】:
我不太擅长使用 Laravel Eloquent 进行查询。我有两张桌子
stories table
------------------------------------------------------------------
id | title | body | author_id |...
------------------------------------------------------------------
1 | Story 1 | Once a.. | 2
2 | Story 2 | There is | 4
3 | Something | You are. | 2
activities table
------------------------------------------------------------------
id | story_id | liker_id |...
------------------------------------------------------------------
1 | 2 | 2
这里author_id & liker_id 实际上是user_id。我想让特定用户创作和喜欢的故事在他的个人资料中显示这些故事。
我想使用 Eloquent ORM。我使用查询生成器尝试过这样的事情
$stories = DB::table('stories')
->join('activities', function($join)
{
$join->on('stories.author_id', '=', 'activities.liker_id')
})
->where('stories.author_id', $author_id)
->get();
return $stories;
我可以通过join 获取特定liker_id 的story_id,但无法在单个查询中使用story_id 从stories 表中获取详细信息。
【问题讨论】:
-
也许你可以为每个表创建一个模型,并可以做这样的事情 $all = Activities::with('stories')->get()
-
@lajosArpad 如何在
Activities::with('stories')->get()中为stories和liker_id实现whereauthor_id? -
我不是 laravel 用户,但多年来我一直在使用 ORM。您应该可以定义连接路径。例如,您可能有一个连接表 activity_stories,其中包含活动和故事的外键。如果是这种情况,您可以加载带有活动和故事的 activity_stories。
-
@lajosArpad 你的意思是我需要另一个包含
stories和activities数据的表,然后对该表进行查询,对吧?
标签: php mysql laravel-4 eloquent