Orm 如何与其他表格映射雄辩?
这是我第一次使用ORM,所以我想知道是否可以将它映射到其他表 例如,我当前已登录用户。它通过链接表连接到Orm 如何与其他表格映射雄辩?,orm,laravel,eloquent,Orm,Laravel,Eloquent,这是我第一次使用ORM,所以我想知道是否可以将它映射到其他表 例如,我当前已登录用户。它通过链接表连接到POSTS表。例如,如果我想选择帖子,我会这样做: SELECT `posts`.`id`', `posts`.`Name`, `posts`.`Description` FROM `links`, `posts` WHERE `links`.`user_id` = 1 AND `links`.`post_id` = `posts`.`id` $posts =
POSTS
表。例如,如果我想选择帖子,我会这样做:
SELECT
`posts`.`id`', `posts`.`Name`, `posts`.`Description`
FROM
`links`,
`posts`
WHERE
`links`.`user_id` = 1 AND `links`.`post_id` = `posts`.`id`
$posts = POST::OfUser(1)->get();
如果我请求
Posts::all()
它将只为当前用户返回帖子,那么如何扩展它的雄辩性…您的帖子有点让人困惑,但我希望我的回答能如您所期望的那样解决它
警告:
有关详细信息,请参考Laravel的(多对多)
为了使事情变得简单并符合Laravel约定,我强烈建议您使用post_user
而不是link
作为透视表(post_user
表应该有user_id
和post_id
作为列)
您不必定义相应的枢轴模型(这是惯例)
以下模型旨在分别映射到表用户
和帖子
用户模型:
在app/model/user.php中(已经存在,只需添加关系定义)
后模型:
在app/models/post.php中(当然要创建)
检索用户的帖子:
通常,在Laravel中执行以下操作以获取当前登录的用户:
$user = Auth::user(); // a User model / record
假设$user的类型为user(Model),则可以使用以下方法检索其所有帖子:
$user->posts(); // a Collection
你的帖子有点让人困惑,但我希望我的回答能像你期望的那样解决这个问题 警告: 有关详细信息,请参考Laravel的(多对多) 为了使事情变得简单并符合Laravel约定,我强烈建议您使用
post_user
而不是link
作为透视表(post_user
表应该有user_id
和post_id
作为列)
您不必定义相应的枢轴模型(这是惯例)
以下模型旨在分别映射到表用户
和帖子
用户模型:
在app/model/user.php中(已经存在,只需添加关系定义)
后模型:
在app/models/post.php中(当然要创建)
检索用户的帖子:
通常,在Laravel中执行以下操作以获取当前登录的用户:
$user = Auth::user(); // a User model / record
假设$user的类型为user(Model),则可以使用以下方法检索其所有帖子:
$user->posts(); // a Collection
您可以在POST
模式中定义
public function scopeOfUser($query,$user_id)
{
return $query->join('links', 'links.post_id', '=', 'posts.id')
->where('links.user_id', '=', $user_id)
->select('posts.id', 'posts.Name', 'posts.Description');
}
然后像这样使用它:
SELECT
`posts`.`id`', `posts`.`Name`, `posts`.`Description`
FROM
`links`,
`posts`
WHERE
`links`.`user_id` = 1 AND `links`.`post_id` = `posts`.`id`
$posts = POST::OfUser(1)->get();
您可以在POST
模式中定义
public function scopeOfUser($query,$user_id)
{
return $query->join('links', 'links.post_id', '=', 'posts.id')
->where('links.user_id', '=', $user_id)
->select('posts.id', 'posts.Name', 'posts.Description');
}
然后像这样使用它:
SELECT
`posts`.`id`', `posts`.`Name`, `posts`.`Description`
FROM
`links`,
`posts`
WHERE
`links`.`user_id` = 1 AND `links`.`post_id` = `posts`.`id`
$posts = POST::OfUser(1)->get();