使用laravel查询构建器限制连接表中的行

时间:2017-11-23 04:36:17

标签: php laravel

我的数据库中有2个表(items和items_photos)我想从" items"中取出行。表并加入到item_photos(使用items.id = items_photos.itemsId)但我想从item_photos表中只获得一行以显示作为搜索结果的分页,即:​​

items:
id    |    name    |    price    |    
------------------------------------------
1     |  item 1    |    30       |  
2     |  item 2    |    32       |
3     |  item 3    |    28       |


item_photos:
id    |    idItem  |    filename        |    
------------------------------------------
1     |      1     |    filename1.jpg   |  
2     |      1     |    filename2.jpg   |
3     |      1     |    filename3.jpg   |
4     |      2     |    filename4.jpg   |  
5     |      2     |    filename5.jpg   |
6     |      3     |    filename6.jpg   |

我想得到的结果是:

  item.id  |  items.name  | items.price  |  photos.id  |  photos.filename
---------------------------------------------------------------------------
      1    |    item 1    |      30      |      1      |    filename1.jpg 
      2    |    item 2    |      30      |      4      |    filename4.jpg 
      3    |    item 3    |      30      |      6      |    filename6.jpg 

我试过的是这个

$result = Item::where('name', 'like', "%$query%")
                -join('item_photos', 'items.id', '=', 'item_photos.idItem')
                ->take(1)
                ->paginate(5);

但是我从这个查询得到的结果显示了重复的行:

  item.id  |  items.name  | items.price  |  photos.id  |  photos.filename
---------------------------------------------------------------------------
      1    |    item 1    |      30      |      1      |    filename1.jpg 
      1    |    item 1    |      30      |      2      |    filename2.jpg
      1    |    item 1    |      30      |      3      |    filename3.jpg
      2    |    item 2    |      30      |      4      |    filename4.jpg   
      2    |    item 2    |      30      |      5      |    filename5.jpg 
      3    |    item 3    |      30      |      6      |    filename6.jpg 

0 个答案:

没有答案