【问题标题】:Laravel select * where id =(select id )Laravel 选择 * where id =(select id )
【发布时间】:2018-02-06 14:38:15
【问题描述】:

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

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

【问题讨论】:

  • 分支和用户之间的关系建立了吗?

标签: laravel laravel-query-builder


【解决方案1】:

我会把它分成两个查询。首先获取 id,然后获取列表。期望您的模型被称为“用户”和“分支”

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

本站可以帮到你Link

【讨论】:

    【解决方案2】:
     $id = Users::select('id')->where('name','sara')->first();
     $barnches = branches::where('id',$id)->get();
    

    这里的用户和分支是模型,首先是使用 1 行并获取多行

    【讨论】:

      【解决方案3】:

      试试这个。

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

      【讨论】:

        【解决方案4】:

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

        $branches = Branch::whereHas('user', function ($query) {
        
            $query->where('name', 'sara');
        
        })->get();
        

        希望这会有所帮助!

        【讨论】:

          【解决方案5】:

          你可以使用这个

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

          【讨论】:

            猜你喜欢
            • 2017-09-27
            • 1970-01-01
            • 2023-03-20
            • 2014-01-27
            • 2011-02-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多