Reputation: 29
I want to change this MySQL query to Larvel Grammar.
MySql inner Join
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%'
Upvotes: 3
Views: 9337
Reputation: 775
Try this query:
DB::table('users')
->select(['users.name', 'communities.title', 'communities.content'])
->join('communities', 'communities.user_id', '=', 'users.id')
->where('users.name', 'like', '%' . $request->name . '%')
->get();
Upvotes: 2
Reputation: 4033
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();
I hope this will help you. thanks
Upvotes: 0
Reputation: 2855
Dont know what do you mean by Larvel Grammar. but i think you thinking about laravel eloquent or query builder:
Your query:
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%'
Query Builder:
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 (if you have those models):
User::with('communities')
->where('name', 'like', '%' . $request->name . '%')
->get();
Note: User model should have communities relation:
public function communities(){
return $this->hasMany(Community::class);
}
Upvotes: 2
Reputation: 6379
You can use Laravel Query builder. Add use DB;
at the top (in Class) of your controller.
Then use this, When you want to get data.
$users = DB::table('users')
->join('communities', 'users.id', '=', 'communities.user_id')
->select('users.name , communities.title , communities.content')
->where('users.name','LIKE','%name%')
->get();
Upvotes: 0