2016-10-13 2 views
1

CompanyEmployeeという2つのモデルがあり、対応するテーブルはMySQLのcompaniesemployeesです。

私は定義されたこれらの多対1の関係があります。Employeeモデルで

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

Companyモデルで

の方法で

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

company以上があります符号なし整数の外部キーは、employeesテーブルに存在します。

私は$company->employees;を試しましたが、これは選択された会社のすべての従業員のリストを返します。私はすべての従業員のIDが過ぎず、他の行を取得するために$company->employees->idを行うときしかし、それは私にエラーを与える:

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

答えて

1

まあ$company->employeesは、コレクションを返す->idは、コレクション内のプロパティではありません、thatsのなぜあなたはエラーを取得します。

あなたの従業員のすべてのIDを含む配列を取得したい場合は、あなたがこれを行う可能性があります:

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

あなたがこれを読んでlaravel ^5.3.*を使用している場合、答えは次のようになります。

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

->toArray()を連鎖できる配列にするには、これはすべてのIDを持つコレクションを返します。

+0

これは機能します、リストの方法を少し説明していただけますか?ありがとう! – omrakhur

+0

私も混乱しているのは、 'id'はそれがテーブル上のフィールドなので、プロパティですか、そうではありませんか? – omrakhur

+0

確かに、[lists](https://laravel.com/docs/4.2/queries#selects)関数はすべてのIDを含む配列を返しますが、 'id'は実際にはプロパティですが、結果はこのように少し見えます。 $ x ['id'] 'を実行しようとしていましたが、' id'の値は実際に '$ x [0] ['id '] ' – Neat

関連する問題