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 =

这是我第一次使用ORM,所以我想知道是否可以将它映射到其他表

例如,我当前已登录用户。它通过链接表连接到
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();