Eloquent の 3 つのテーブル、つまりユーザー、部門、役割を結合しようとしています。ユーザーは、1 つの部門と 1 つのロールのみを持つことができます。モデルを定義した方法は次のとおりです。
ユーザーモデル:
public function department(){
return $this->has_one('Department', 'department_id');
}
public function role(){
return $this->has_one('Role', 'role_id');
}
}
デパートメント
<?php
class Department extends Eloquent
{
public static $key = 'department_id';
public static $table = 'sys_departments';
public static $timestamps = false;
public function user(){
return $this->belongs_to('User', 'user_id');
}
}
役割
class Role extends Eloquent
{
public static $key = 'role_id';
public static $table = 'sys_roles';
public static $timestamps = false;
public function user(){
return $this->belongs_to('User', 'user_id');
}
public function transaction(){
return $this->has_many('Transaction', 'transaction_id');
}
}
そして、コントローラーでそれらにアクセスする方法は次のとおりです。
$user = User::with(array('department', 'role'))->where('user_id', '=', 1)->first();
echo $user->department->department;
これらのクエリを生成しています:
SELECT * FROM `tbl_users` WHERE `user_id` = '1' LIMIT 1
SELECT * FROM `tbl_users` WHERE `user_id` = '1' LIMIT 1
SELECT * FROM `sys_departments` WHERE `department_id` IN ('1')
SELECT * FROM `sys_roles` WHERE `role_id` IN ('1')
何か案は?