2016-07-27 11 views
1

(作業isn`t)コントローラー・コードLaravelモデル、関係Eloquentを使用してinnjoinクエリを作成する方法は?

$employees = Employee::with('department')->get(); 

モデル:部門

class Department extends Model 
{ 
... 
/** 
* Defining Relationships. 
*/ 
    public function employee() 
    { 
    return $this->hasMany('GloboDeals\Employee'); 
    } 
} 

モデル:従業員

class Employee extends Model 
{ 
/** 
* Defining Relationships. 
*/ 
.... 
public function department() 
{ 
    return $this->belongsTo('GloboDeals\Department','departments_id','id'); 
} 

は、外部IDがtable_idの名前を持っています。

私は検索して検索しても解決策はありませんので、誰かがチェックアウトしてアイデアを伝えることができれば、私のコードはちょうどblehhhだと思います。

+0

従業員の部署または部門を持つ全従業員をお探しですか? – Vuldo

+0

何がうまくいかない?間違いはありますか?予期しない結果が出ますか?あなたはどんな結果を得ますか?あなたはどんな結果を期待しましたか? –

+0

テーブル構造を転記できますか? – clod986

答えて

0

Eloquentは、各テーブルにidという名前の主キー列があると仮定します。 $ primaryKeyプロパティを定義して、この規約をオーバーライドすることができます。お使いのモデルの各部署のモデルのためにそうように主キーを追加します。

protected $primaryKey = 'department_id'; 

雄弁は、外部キーは、ID(またはカスタム$ PRIMARYKEY)親の列に一致する値を持つ必要があることを前提としています。つまり、Eloquentは従業員レコードのdepartment_id列の部門ID列の値を検索します。あなたは、ID以外の値を使用するような関係を希望の場合は、カスタムキーを指定belongsToのメソッドに第三引数を渡すことがあります。

return $this->belongsTo('GloboDeals\Department', 'departments_id', 'departments_id'); 

:あなたのケースでは、あなたの従業員モデルの部門を()呼び出していますこれは、従業員モデルが、employeesテーブルのdepartments table = departments_idの関係departments_idのどこにあるのかを、部門の詳細に熱心にロードすることを意味します。

+0

すべてのテーブルは、モデル名の複数形です 部門プライマリID = id、 プライマリID = id 、 department = departments_id – buga

+0

の外部IDを使用する場合、キーを置き換える必要があります。$ this-> belongsTo( 'GloboDeals \ Department'、 'id'、 'departments_id'); 'foreign_key'が他のテーブル(部門)から最初に来てローカルキーが最後のdepartments_id(テーブル(従業員)から来るため) – ClearBoth

関連する問題