php - Groupby on relation laravel -


hey have 3 table this

--table plan-- id name ....  ----table letter--- id plan_id ....  ---table person---- id plan_id name ..... 

model have :

---model plan--- class plan extends model {     protected $table = 'plan';     public function letter(){        return $this->hasone('app\letter');     }     public function person(){        return $this->hasmany('app\person');     } } --model person-- class person extends model {     public function plan(){        return $this->belongsto('app\plan');     } }  --model letter-- class letter extends model {     public function plan(){        return $this->belongsto('app\plan');     } } 

and in controller write code :

$letter = letter::find($id) // $id url parameter , it's work return view('letter',['letter' => $letter]); 

nah in view wanna acces person name letter model distinct , write code this

{{ @foreach ($letter->plan()->person()->groupby('name')->get) $person }} 

but return error : call undefined method illuminate\database\query\builder::person()

where mistake(s)?

there difference between $letter->plan() , $letter->plan. if call method, laravel return query builder. if call attribute laravel return model relation.

so you're trying call model on query builder, method doesn't exists , creates error. fix problem:

$letter->plan->person()->groupby('name')->get()

in controller can do:

$letter = letter::find($id) // $id url parameter , it's work $persons = $letter->plan->person()->groupby('name')->get();  return view('letter', compact('letter', 'persons')); 

and in view:

@foreach($persons $person) 

Comments

Popular posts from this blog

javascript - Create a stacked percentage column -

Optimising Firebase database by automatically overwriting data -

javascript - Angular UI-Grid customTemplate directive causing rows to load slowly/? -