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();
使用 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();