Laravel select * 其中 id =(select id )

Laravel select * where id =(select id )

使用 Laravel eloquent 如何进行这样的查询:

 select * from branches where user_id =(select id from users where name ='sara' )

我会把它分成两个查询。先获取id,再获取列表。期望您的模型被称为 "User" 和 "Branches"

$user = User::where('name', 'sara');
$id = $user->id;
$branches = Branch::where('id', $id);

此站点可能对您有所帮助Link

 $id = Users::select('id')->where('name','sara')->first();
 $barnches = branches::where('id',$id)->get();

这里Users和branch都是模型,首先是using for 1 row and get for many rows

试试这个。

$name = 'sara';

$results = BranchModel::whereIn("user_id", function ($query) use ($name) {
    $query->select("id")
        ->from((new UserModel)->getTable())
        ->where("name", $name);
})->get();

假设您的 Branch 模型中有 user 关系,您可以使用 whereHas:

$branches = Branch::whereHas('user', function ($query) {

    $query->where('name', 'sara');

})->get();

更新

如果您使用的是 v8.57.0 或更高版本,您现在可以改用 whereRelation() 方法:

Branch::whereRelation('user', 'name', 'sara')->get();

你可以用这个:

$users = User::whereName("sara")->get()->pluck('id');
Branch::whereIn('user_id',$users)->get();