Laravel内连接查询

3

我想将这个MySQL查询语句转换为Laravel语法。

MySQL内部连接

 select u.name , c.title , c.content 
 from users u 
 inner join communities  c on u.id = c.user_id
 where u.name like '%name%'
4个回答

2

不知道你所说的Laravel语法是什么意思,但我认为你在考虑Laravel Eloquent或查询构建器:

你的查询:

 select u.name , c.title , c.content 
 from users u 
 inner join communities  c on u.id = c.user_id
 where u.name like '%name%'

查询构建器:

 DB::table('users')
     ->select(['name', 'c.title', 'c.content'])
     ->join('communities as c', 'c.user_id', '=', 'users.id')
     ->where('name', 'like', '%' . $request->name . '%')
     ->get()

Eloquent(如果您有这些模型):

User::with('communities')
        ->where('name', 'like', '%' . $request->name . '%')
        ->get();

注意:用户模型应该具有社区关系:
   public function communities(){
      return $this->hasMany(Community::class);
   }

2

请尝试使用以下查询:

DB::table('users')
     ->select(['users.name', 'communities.title', 'communities.content'])
     ->join('communities', 'communities.user_id', '=', 'users.id')
     ->where('users.name', 'like', '%' . $request->name . '%')
     ->get();

0
DB::table('tableName')
->join('communities AS c','c.user_id','=','tableName.id')
->where('tableName.name','LIKE','name')
->select('tableName.name','c.title','c.content')
->get();

希望这能对你有所帮助。 谢谢


0

你可以使用 Laravel 查询构建器。在控制器的顶部(类中)添加use DB;

然后,当你想要获取数据时,使用以下代码:

$users = DB::table('users')
                ->join('communities', 'users.id', '=', 'communities.user_id')
                ->select('users.name , communities.title , communities.content')
                ->where('users.name','LIKE','%name%')
                ->get();

公共函数搜索作者($search){ 返回 DB::table('users') ->join('communities', 'users.id', '=', 'communities.user_id') ->select('users.name , communities.num,communities.country ,communities.title,communities.content,communities.hits,communities.commend,communities.created_at') ->where('users.name','LIKE',"%$search%") ->get();} // 出现错误。我想要获取我的作家搜索结果。 - 박보근

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接