2016-10-13 70 views
1

我有兩個模型CompanyEmployee,在MySQL中有相應的表格,companiesemployees

我有這麼多對1的關係定義:

Company模式:

public function employees(){ 
     return $this->hasMany('App\Employee','company'); 
    } 

Employee模式:

public function company(){ 
     return $this->belongsTo('App\Company','company'); 
    } 

company在上面的方法是無符號整數外鍵存在於employees表中。

在修補程序中,我試過$company->employees;,它返回所選公司中所有員工的列表。然而,當我做$company->employees->id得到全體員工的ID,而不是其他行,它給我的錯誤:

PHP error: Undefined property: Illuminate\Database\Eloquent\Collection::$id on line 1 

回答

1

$company->employees返回一個集合,->id不是集合中的屬性,這就是你爲什麼得到錯誤。

如果要檢索包含所有的ID是你的員工,你可能會做這樣的數組:

$company->employees()->lists('id'); 

如果你正在讀這篇文章,並使用laravel ^5.3.*那麼答案將是:

$company->employees()->pluck('id'); 

這將返回一個包含所有ID的集合,如果您希望它是一個數組,您可以將它連接到後面的->toArray()

+0

這很有效,請您介紹一下列表方法嗎?謝謝! – omrakhur

+0

我也很困惑的是,'id'是屬性,因爲它是表中的一個字段,或者不是? – omrakhur

+0

當然,[lists](https://laravel.com/docs/4.2/queries#selects)函數返回一個包含所有id的數組,'id'確實是一個屬性,但是結果看起來有點像這樣' $ x = array(array('id'=> 1));',你試圖做'$ x ['id']',而'id'的值實際上是在$ x [0] ['id ']' – Neat

相關問題