Php Laravel选择对象作为特性

Php Laravel选择对象作为特性,php,laravel,orm,Php,Laravel,Orm,我想知道是否有可能在查询中进行左联接,以及它是否存在,而不是让所有列都处于同一“级别”,从而使联接表成为属性(这没有任何关系) 比如说 $users = user::leftJoin("posts","users.id","=","posts.user_id")->get(); 而不是把每一个领域都放在一起 ["id"/*This actually gets messed up if select doesn't choose wich to use*/, "name", "ag

我想知道是否有可能在查询中进行左联接,以及它是否存在,而不是让所有列都处于同一“级别”,从而使联接表成为属性(这没有任何关系)

比如说

$users = user::leftJoin("posts","users.id","=","posts.user_id")->get();
而不是把每一个领域都放在一起

["id"/*This actually gets messed up if select doesn't choose wich to use*/,
  "name",
  "age",
  /*Now post fields*/
  "tile",
  "date_posted"
  ...
]
让它回来

["id",
  "name",
  "age",
  "post"=>[
    "id",
    "tile",
    "date_posted"
    ...
   ]
]

编辑:如果可能的话,为了避免明显的循环。。。我知道这是可能的,在最后的手段中会使用它们,但不使用循环将有助于解决您在用户表中使用雄辩的问题。为什么不使用关系呢?这正是你想要的。创建一个新的
Post
模型。然后将以下关系添加到
用户
模型中

public function posts()
{
    return $this->hasMany(Post::class);
}
您现在可以像这样通过post获取用户

$users = User::with('posts')->get();

结果正是你想要的。在我的示例中,我还使用了
User
,其中正如您所使用的
User
。结果将包含posts对象作为
posts
,而不是如示例中所示的
post
,您可以通过更改关系方法名称来更改此属性名称。我用了这些,因为它们是正确的惯例

不,不可能(像那样)。这正是为什么你应该使用关系而不是连接。我以user和posts为例。@sérgiories你可以将其与任何其他类型的类似关系交换,你会得到相同的结果。在实际的定位中,想象一下,用户有一个类型,比如$user->id_类型,有时id_类型为空(目前还没有关联)有多种类型的关系,每种关系都有不同的条件,您可以通过这些条件来提取数据。例如,您可以使用
has
whereHas
仅提取具有帖子或具有特定条件的帖子的用户。在这种情况下,用户有许多帖子,而帖子属于某个用户。该示例旨在展示实际上,你可以得到你需要的结果格式。即使关系不同,也总有一种方法可以通过相关数据获得所需的结果。你应该在这里阅读更多关于它的内容,我可以给出一个更好的例子,这种关系更多的是一对一(一个用户有一种类型)而不是一对多(一个用户有许多帖子),不过,使用elequent关系的问题是,在我看来,它们的使用付出了巨大的代价,因此希望尝试使用连接,这实际上会使事情变得更顺利。无论如何,你的答案显然是这个问题中最正确的。谢谢。