我想将此MySQL查询更改为Larvel语法。
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%'
答案 0 :(得分: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();
答案 1 :(得分:1)
不知道你对Larvel语法的意思。但我认为您在考虑laravel雄辩或查询生成器:
您的查询:
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()
雄辩(如果您有这些型号):
User::with('communities')
->where('name', 'like', '%' . $request->name . '%')
->get();
注意:用户模型应具有社区关系:
public function communities(){
return $this->hasMany(Community::class);
}
答案 2 :(得分: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();
我希望这会对您有所帮助。 谢谢
答案 3 :(得分: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();