Laravel 如何从节表中获取用户?拉维尔

Laravel 如何从节表中获取用户?拉维尔,laravel,Laravel,我的想法是在两个表的部分和用户 节\u id存在于用户表中,它与id节相关 SO对于ex:section_id=2>要将所有属于id节的用户 我这里的代码使用url中的id,我不想在没有id的情况下执行此操作。请将所有用户带到: public function getAllUsers($id) { $data = User::where('section_id',$id)->get(); } 如果设置一对多关系,可以说:$user->section返回用户所属的节…和$section

我的想法是在两个表的部分用户

节\u id存在于用户表中,它与id节相关

SO对于ex:section_id=2>要将所有属于id节的用户

我这里的代码使用url中的id,我不想在没有id的情况下执行此操作。请将所有用户带到:

public function getAllUsers($id)
{
  $data = User::where('section_id',$id)->get();
}

如果设置一对多关系,可以说:
$user->section
返回用户所属的节…和
$section->users
获取节中所有用户的集合——在这种情况下,getAllUsers()是多余的

确保您的用户和节模型包含这些方法。如果用户表上有一个section\u id列,则听起来迁移设置正确

有关一对多的更多信息,请点击此处:

php artisan tinker
中测试您的关系,就像这样

$user = User::find(1);
$user->section

如果我理解正确,您希望获得与该部分有关系的特定部分的所有用户

假设您在部分正确设置了关系模型:

public function users() {
    return $this->hasMany('App\User');
}
我建议您“向后”执行此操作,只需从部分模型本身中提取用户(急切加载允许一次查询):


您需要一个唯一标识符来接收分区id的用户。从url(get)或ajax(post)接收它。如果您担心用户访问,请使用“auth”

我不想使用id!哪个身份证?节还是用户ID?如果要从数据库加载资源,则需要一个唯一标识符。如果您想在其两侧使用未命名ID的列,请参考文档并提供您自己的密钥。不,不,我只希望用户具有与第节相同的ID。\u ID:like this section\u ID=ID get all users):那么我上面的解决方案就是您想要的,请尝试。它将返回此处的所有用户!您的所有用户是否都具有相同的
部分id
?如果设置正确,则不可能使用此代码返回所有用户。对于从数据库中提取的单个
$section
,这将只返回那些具有
section\u id
的用户。@Watercayman似乎希望某个section(由id标识)中的所有用户都不提供id。#facepalmOK。那很好——那么我写的就是正确的答案。这将根据关系为您提供
section\u id=id
。很高兴您得到了它。第一个代码是获取节(如果要查找特定节,可以获取数据库中的第一个,或者使用
->find($section\u id)
而不是
->first()
)。您还渴望将用户与剖面模型一起加载。这将只加载附加到该节的用户,因为Laravel正在查看用户上的
节id
,以提取他们——这就是关系在幕后所做的。然后,在第二个代码中,您只是从
$部分
对象中提取已经加载的用户。
$user = User::find(1);
$user->section
$section = Section::find(1);
$section->users
public function users() {
    return $this->hasMany('App\User');
}
$section = Section::with('users')->first();
$usersForThisSection = $section->users;