我试图通过使用联接来提高我的laravel5.4sql查询的速度,这是我以前从未使用过的。我目前有工作的查询和返回结果,我的问题是,我得到像每个结果约8倍。例:我得到同样的2001雪佛兰silverado 8次在我的阵列。如果有人能帮我,我会非常感激的。谢谢
我的查询+集合:
$tmp = DB::table('inventories'
)->join(
'vehicles', 'vehicles.id', '=', 'inventories.id'
)->join(
'vimages', 'vimages.vehicle_id', '=', 'inventories.id'
)->where(
'inventories.dealer_id', '=', $dealer_id
)->where(
'inventories.is_active', '=', 1
)->where(
'inventories.is_deleted','=', 0
)->select(
'inventories.stock_number','inventories.vehicle_id','vehicles.year','vehicles.make','vehicles.model','vehicles.vin','inventories.vehicle_status',
'inventories.cost','inventories.search_meta','vimages.name'
);
$data = collect();
$pmt = $tmp->get();
// return json_encode( $pmt );
// logger( sprintf('# of rows returned: %s', $pmt->count() ) );
$pmt->each( function($row) use(&$data) {
// logger( sprintf('Row : %s', $row->toJson() ));
$data->push( array(
'stock_number' => $row->stock_number,
'vehicle_id' => $row->vehicle_id,
'year' => $row->year,
'make' => $row->make,
'model' => $row->model,
// 'trim' => $row->trim,
'vin' => $row->vin,
'status' => $row->vehicle_status,
// 'purchase_price' => $row->purchase_price,
'cost' => $row->cost,
// 'retail_price' => $row->retail_price,
'search_meta' => $row->search_meta,
// 'images' => $row->getFirstImage()
'images' => $row->name
// 'interior_color' => $row->vehicle()->first()->interior_color,
// 'exterior_color' => $row->vehicle()->first()->exterior_color,
// 'firstImg' => $row->getFirstImage()
// 'images' => Vimage::select('vehicle_id','name'
// )->where(
// 'dealer_id', '=', $row->dealer_id
// )->where(
// 'vehicle_id', '=', $row->vehicle_id
// )->limit(1)->get()
));
});
我的数组示例:https://i.imgur.com/fophst8.png
3条答案
按热度按时间f8rj6qna1#
多亏了@devon。添加了另一个where语句来查询,以仅获取第一个图像。
谢谢
j7dteeu82#
听起来很琐碎,但这应该是可行的:
更新:忘记删除中的单引号
selectRaw
sg3maiej3#
我没有看到您的db表,但我认为在第一个连接语句中存在问题:您应该使用
而不是
第二个连接应该是
而不是