박보근
박보근

Reputation: 29

Laravel inner join Query

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

Answers (4)

Bhoomi Patel
Bhoomi Patel

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

PHP Geek
PHP Geek

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

Emtiaz Zahid
Emtiaz Zahid

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

BadPiggie
BadPiggie

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

Related Questions