2017-02-27 50 views
0

我有兩種模型定義(Laravel應用程序):AdviceProtocolQuestion其中你的表advice_protocolsquestions。這些模型已被聯繫在一起:Laravel Eloquent Join查詢不能訪問所有變量

public function userGoal() { 
     return $this->hasOne('App\Question', 'id', 'user_goal_id'); 
    } 

我想從我的查詢以下variabels:建議協議名稱,忠告協議類別和問題的名字。這兩個表通過一組ids鏈接。我現在使用的查詢是:

public function data(){ 
     $advicePreparationsQuery = AdviceProtocol::select(['advice_protocols.name', 'advice_protocols.category', 'questions.id']) 
     ->join('questions', 'advice_protocols.user_goal_id', '=', 'questions.id') 
     ->get(); 

questions.id可以檢索,但是當我改變變量questions.name:沒有被檢索。我的輸出不會給出錯誤,但不會返回任何值。有人能幫我拿到questions.name的價值嗎?

+0

你填補了'fillables'陣列?你可以向我們展示你的模型嗎? –

回答

1

name是在查詢中明確的,因爲你'也在選擇advice_protocols.name。你需要給他們的別名,所以它知道哪些列是當你試圖訪問$advicePreparationsQuery->name

$advicePreparationsQuery = AdviceProtocol::select(['advice_protocols.name', 'advice_protocols.category', 'questions.name AS question_name']) 
    ->join('questions', 'advice_protocols.user_goal_id', '=', 'questions.id') 
    ->get(); 
+1

非常感謝你!我現在也明白我做錯了什麼。你真棒! –

0

嘗試:

$advicePreparationsQuery = AdviceProtocol::select(['advice_protocols.user_goal_id', 'advice_protocols.name', 'advice_protocols.category', 'questions.id', 'questions.name']) 
     ->join('questions', 'advice_protocols.user_goal_id', '=', 'questions.id') 
     ->get(); 
+0

這給了我兩次id .. –

+0

試試我的更新回答 – Paras

0

我認爲問題是,你不選擇questions.name ...

嘗試:

$advicePreparationsQuery = AdviceProtocol::select([ 
    'advice_protocols.name', 'advice_protocols.category', 'questions.name' 
    ]) 
    ->join('questions', 'advice_protocols.user_goal_id', '=', 'questions.id') 
    ->get(); 
+0

請閱讀我的問題,當我嘗試這個沒有值返回.. –