laravel 如果table1.column值在table2.column值中,是否可以连接两个表

5f0d552i  于 2023-01-27  发布在  其他
关注(0)|答案(2)|浏览(214)

我有两个表,即 usersactions_performed
users:* 标识、名称等 *
actions_performed:* 执行人,操作标识 *
现在,actions_performed 中的值可以为[ 'user:15', 'department:3', 'team:7' ]
现在,我想获取由特定用户say id 1执行的操作
我在Laravel 9中实现了相同的功能,
有人能帮助我使用ORM relations或简单的SQL Queries

Users::where( function($q) use($searchString){
        $q->crossJoin('actions_performed', function($q) use($searchString){
            $q->where('performed_by','LIKE','%user%')
                ->where('value','LIKE',"%$searchString%");
        });
    })
tyg4sfes

tyg4sfes1#

谢谢大家
我通过以下方式实现了同样的效果

$query->when(!empty($searchString), function($q1) use($searchString){
          $q1->join('actions_performed', \DB::raw("CONCAT('user:' , `users`. `id`)"), '=', 'actions.performed_by')
              ->where(function ($q2) use($searchString){
                  $q2->where('actions.performed_by', 'LIKE', "%$searchString%");
              });
      });
brvekthn

brvekthn2#

可以使用join()方法指定表之间的关系。可以使用以下代码连接表

$data = DB::table('table1')
            ->join('table2', 'table1.id', '=', 'table2.table1_id')
            ->select('table1.*', 'table2.*')
            ->get();

相关问题