2

I want to return the data of Charge instance instead of User , for that i am trying to use joins ,can you please help me to acheive this thing

  $id=Charge::whereNotNull('created_by')->get('created_by')->toArray();
        foreach($id as $name){
            $id[] = $name['created_by'];
        }
        return $v=User::whereIn('id',$id)->where('username',$request->data)->get();
        }

for this i am trying to use left join , relationship available between created_by and id (I am trying to convert above queries into single query)

$v=Charge::whereNotNull('created_by')->leftJoin('User',function($join){
            $join->on('Charge.created_by','=','User.id');
        })->get();
usersuser
  • 167
  • 12
  • Do you have a relationship in your models? ```public function user(){ return $this-hasMany(Charge::class, 'id', 'created_by'); } ``` ? – futureweb Feb 02 '22 at 16:54
  • `return $this->belongsTo(User::class , 'created_by');` like this available in charge model – usersuser Feb 02 '22 at 16:56
  • and you have the inverse on user? then you can just do ``` return User::with('charge')->get(); ``` or ```return Charge::with('user')->get();``` or if not all charges have users ```return Charge::whereHas('user')->get();``` – futureweb Feb 02 '22 at 17:02

0 Answers0