2017-08-05 55 views
0

我有問題建立與雄辯的關係。 我有兩個創建的模型,Spielplan和Verein。在模型Spielplan中,我有Team_ID和Spiel_ID字段。在模型Verein中,我有字段V_ID和名稱。現在我需要加入這兩張關於Team_ID = V_ID的表格。雄辯地加入在哪裏條款

這是我的模型

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Spielplan extends Model 
{ 
    protected $table = 'Spielplan'; 

    public function vereinFunction(){ 
     return $this->hasOne('App\Verein', 'V_ID'); 
    } 
} 

這是我的網絡的路由功能,我想Spiel_ID和名稱。

Route::get('test', function(){ 
    $spieleT = App\Spielplan::where('Spiel_ID', '=', 30)->get(); 
    foreach($spieleT as $da){ 
     echo $da->Spiel_ID; 
     echo $da->vereinFunction->Name; 
    } 
}); 

第一回波的作品和我回去Spiel_ID但第二回聲還給ErrorException試圖讓非對象的屬性。 我的代碼有什麼問題?

+0

似乎'$ da-> vereinFunction'爲空或爲空 –

+0

您是否想出了一個解決方案呢? – Jonathan

回答

0

嘗試編輯這一行:

$spieleT = App\Spielplan::with('vereInFunction')->where('Spiel_ID', '=', 30)->get();

with()可以讓你獲取你使用get()時間的關聯。在使用get()後,您正在處理一個集合,並且無法再次查詢數據庫。

0

嘗試指定模型主鍵作爲第三個參數,因爲如果不是,Laravel會認爲它被命名爲id,但情況並非如此。 (我使用Codeigniter的日子),但自從我在三年前開始使用Laravel以來,我遵循Laravel約定(建議,但沒有強加)。我現在用小寫字母命名,(蛇形)複數,表格字段也是小寫字母。模型奇異,相似的對應表,關係函數名稱作爲相關模型,如果關係對一個是單數的,如果對多個複數等等。這個優點在模型關係聲明中反映出來,這更加簡單和容易界定。

例如(僅作爲上述示範),

表(具有關係一對多:

管理者(PrimaryKey的:ID,名稱,......) 技師(主key:id,foreingkey:manager_id(相關表名,單數加下劃線加id),名稱.....)

型號:

經理:

/* *關係/

public function technicians() // see name as related table, plural due to as many relationship) 
{ 
    return $this->hasMany(Technician::class); // as naming convention has followed, you don't need to specify any extra parameters; 
} 

Techician:

/* *關係/

public function manager() // named as related table, singular due to to one relationship 
{ 
    $this->belongsToOne(Manager::class); // again, as naming convention has followed, you don't need to specify any extra parameters; 
} 

爲此E可以做到這一點:

$manager::find(1); 
echo $manager->technicians->first()->name, 

foreach ($manager->technicians as $technician) { 
    echo $technician->name; 
} 

還有:

$technician->manager->name; 

記住,正確的模型關係定義將節省大量的頭痛一路走來,像你有一個

希望這個幫助在任何方面