2015-10-16 191 views
1

是否有任何人能夠從我所基於的截圖和模型建立的雄辯關係建議? enter image description hereLaravel 5.1雄辯關係

模型設置:

class Leaves extends Model 
{ 
    protected $table = 'leaves'; 

    protected $fillable = [ 
     'leave_type', 
     'user_id' 
    ]; 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

} 

class LeaveType extends Model 
{ 
    protected $table = 'leave_type'; 

    protected $fillable = ['type_name']; 
} 

class User extends Model implements AuthenticatableContract, 
            AuthorizableContract, 
            CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 

    protected $table = 'users'; 

    protected $fillable = ['name', 'email', 'password']; 

    protected $hidden = ['password', 'remember_token']; 

    public function leave() 
    { 
     return $this->hasMany('App\Leaves'); 
    } 

} 

目前我只能讓葉細節,但需要根據

$user = User::oldest('name')->get(); 
foreach ($users as $user) { 
    $user->leave()-get(); 

} 

回答

0

的leave_type的TYPE_NAME檢索葉型號:

class Leaves extends Model { 
    protected $table = 'leaves'; 

    protected $fillable = [ 
     'leave_type', 
     'user_id' 
    ]; 

    public function User() 
    { 
     return $this->belongsTo('App\User'); 
    } 
    public function LeaveType() 
    { 
     return $this->belongsTo('App\LeaveType'); 
    } 

} 

LeavesType型號:

class LeaveType extends Model { 
    protected $table = 'leave_type'; 

    protected $fillable = ['type_name']; 
    public function Leaves() 
    { 
     return $this->hasMany('App\Leaves'); 
    } 
} 

用戶模式:

class User extends Model implements AuthenticatableContract, 
            AuthorizableContract, 
            CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 

    protected $table = 'users'; 

    protected $fillable = ['name', 'email', 'password']; 

    protected $hidden = ['password', 'remember_token']; 

    public function Leaves() 
    { 
     return $this->hasMany('App\Leaves'); 
    } 

} 
1
Leave模型

你會

function type() { 
    return $this->hasOne(App\LeaveType); 
} 
在LeaveType

,你應該回報

function leave() { 
    return $this->belongsToMany(App\LeaveType); 
} 

,並在你的控制器:

$user = User::oldest('name')->with('leave', 'leave.type')->get(); 
dd($user->leave->type); 
+0

還注意到' - > leave'和' - > type'在獲取屬性時缺少'()'。 '休假()'會返回一個查詢生成器,所以你可以做'$用戶>離開() - >創建($假);' –

+0

我似乎對功能型)問題( 有什麼毛病我外鍵引用?從附件中,Leaves表中的leave_type是對leave_type表的外部引用 – Derrick

+0

我錯過了,對不起,laravel的默認值是'model_name_id'。在你的情況下,這將是'leave_type_id',但你可以覆蓋它。語法是'return $ this-> hasOne('App \ Model_Name','foreign_key','local_key');' –