2016-11-19 43 views
1

我使用Laravel 5.3。Laravel屬於即使使用特定的FK也不工作

我有2級表和2款(廣告和類別):

Model ad : 
---------------- 
class Ad extends Model 
{ 
    protected $table = 'ads'; 

    protected $primaryKey = 'ad_id'; 

    public function category() 
    { 
     return $this->belongsTo(Category::class, 'cat_id', 'cat_id'); 
    } 
} 

而且

Model category : 
----------------- 
class Category extends Model 
{ 
    protected $table = 'categories'; 

    protected $primaryKey = 'cat_id'; 

    public function ads() 
    { 
     return $this->hasMany(Ad::class); 
    } 
} 

和我的數據庫結構爲:

ads: 
    ad_id - 
    ad_name 
    ad_status 
    cat_id 

categoriess: 
    cat_id - 
    cat_name 

我真的不知道爲什麼,但我無法得到使用此(在我的存儲庫)之間的關係:

return $this->model 
     ->select('ad_id', 'ad_name') 
     ->where('ad_status', '=', 1) 
     ->with('category'); 

查詢很好,我得到了ad信息,但是關係是空的。我檢查了兩個表中存在的cat_id

我錯過了什麼嗎?

回答

1

您需要cat_id鍵添加到select(),使其工作:

return $this->model 
    ->select('ad_id', 'ad_name', 'cat_id') 
    ->where('ad_status', 1) 
    ->with('category') 
    ->get(); 

如果你不加這個關鍵,關係將永遠null。此外,請使用get()來獲取數據。

+2

哦哇!謝謝你的男人!我沒有想到這個......我猜想我在文檔中錯過了這個。 –

+1

你不會在文檔中找到它。很高興幫助。 ) –

+0

@VincentDecaux你也可以使用'$ this-> model-> with()' – xhulio

相關問題