2015-11-07 87 views
0

這是我從2個不同的表中獲取數據的查詢。用(),select()和where()選擇的雄辯

$variant = Variant::with(['v_detail' => function($q){ 
      $q->select('variant_dtl_name'); 
     }])->where('product_id','=',$productId)->get(); 

有輸出,但v_detail返回空列表

結果:

created_at: "2015-11-07 12:37:26" 
id: 1 
product_id: 30 
updated_at: "2015-11-07 12:37:26" 
v_detail: [] 
variant_name: "Pricing" 

但是這些查詢:

$variant = Variant::with('v_detail')->where('product_id','=',$productId)->get(); 

結果是:

created_at: "2015-11-07 12:37:26" 
id: 1 
product_id: 30 
updated_at: "2015-11-07 12:37:26" 
v_detail: [{id: 1, variant_id: 1, variant_dtl_name: "Adult", variant_dtl_price: 25,…},…] 
0: {id: 1, variant_id: 1, variant_dtl_name: "Adult", variant_dtl_price: 25,…} 
1: {id: 2, variant_id: 1, variant_dtl_name: "Senior", variant_dtl_price: 15,…} 
2: {id: 3, variant_id: 1, variant_dtl_name: "Children", variant_dtl_price: 8,…} 
variant_name: "Pricing" 

現在,在工作的查詢中,如何獲取特定的列名稱。謝謝!!

回答

0

你有這樣的:

$variant = Variant::with(['v_detail' => function($q) 
{ 
    // Either add the related foreign key or select all 
    $q->select('related_foreign_key', 'variant_dtl_name'); 

}])->where('product_id','=',$productId)->get(); 

既然你只選擇一個字段是variant_dtl_name那麼它是不可能的,因爲需要的關係建設者外鍵找出相關模型。所以,你也必須選擇那個外鍵。請注意子查詢中的related_foreign_key,所以請使用正確的一個,可能是variant_id,但不能確定,因爲您沒有提及任何相關信息。