php - Only get the first row while doing a leftjoin -


is possible limit result while doing leftjoin?

(laravel 4.2) - querybuilder

i've got following query laravel's querybuilder:

    db::table('part')       ->leftjoin('model', 'model.model_id', '=', 'part.model_id')       ->leftjoin('make',  'model.make_id',  '=', 'make.make_id')       ->leftjoin('photo', 'photo.part_id',  '=', 'part.part_id')       ->select( 'part.part_id',                 'part.model_id',                 'make.desc   make_desc',                 'model.desc  model_desc',                 'photo.local local_img',                 'photo.cdn   cdn_img')       ->take(8)->get(); 

every part has more 4 photos, want first photo included in join. problem when use query, 8 part objects (results). 8 results not 8 parts, 2 parts. query creates 4 of same part objects, difference being photo (the join includes every photo).

i tried things like:

 ->select( '(photo.local limit 1) local_img',            '(photo.cdn limit 1) cdn_img') 

but doesn't work. tried raw query's. tried use '->take(1)' in leftjoin closure, this:

->leftjoin('photo', function($q){     $q->on('photo', 'photo.part_id',  '=', 'part.part_id')->take(1); }); 

but not possible.

i`m searching solution include first photo row in leftjoin.

edit: following on mgrueter's answer. know groupby trick, makes query slow. want in different way query doesn't slow.

group results 'part.id':

db::table('part')   ->leftjoin('model', 'model.model_id', '=', 'part.model_id')   ->leftjoin('make',  'model.make_id',  '=', 'make.make_id')   ->leftjoin('photo', 'photo.part_id',  '=', 'part.part_id')   ->select( 'part.part_id',             'part.model_id',             'make.desc   make_desc',             'model.desc  model_desc',             'photo.local local_img',             'photo.cdn   cdn_img')   ->group_by('part.part_id')   ->take(8)->get(); 

and order results 'photo.created' or whatever column have determine, first photo.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -