亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 5.4 - 幾個表中的多個關系

Laravel 5.4 - 幾個表中的多個關系

PHP
慕絲7291255 2021-06-29 09:00:26
在下面的圖片中,我們可以看到我的表之間的關系。我的目標是從driver_license_types獲取“類型” 。從用戶對象開始。例如:$user = User::find(1);從那里我需要從 driver_license_types 獲取類型。重要的是,教師在instructor_license_types 表中可以有很少的記錄,如下所示:我目前的解決方案:在用戶模型中,我創建了方法指導者,它是關系“屬于”指導者模型。在 Instructor 模型中,我創建了與 Instructor_license_types 關系為“hasMany”的方法許可證在 Instructor_license_types 中,我創建了與 Driver_license_types 關系為“hasMany”的方法類型。最終代碼如下所示:有沒有更好的解決方案?
查看完整描述

2 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

如果您沒有belongsToMany在Instructor模型中建立關系,DriverLicenseType我建議您將其放入:


public function licenseTypes()

{

    return $this->belongsToMany(DriverLicenseType::class, 'instructors_license_types', 'instructor_id', 'driver_license_type_id');

}

$user = User::find(1);


$licenseTypes = $user->instructor->licenseTypes->pluck('type')->unique();

或者,如果您需要$licenseTypes采用問題中的格式,您可以執行以下操作:


$licenseTypes = $user->instructor->licenseTypes->map(function ($item) {

    return [$item->id, $item->type];

});


查看完整回答
反對 回復 2021-07-02
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

通過添加以下函數,您可以直接從 Instructors 模型中獲取 driver_license_types:


//PathToModel\Instructor.php


public function license_types()

{

    return $this->belongsToMany('PathToModel\LicenseTypes', 'instructors_license_types');

}

還將其添加到 LicenseType 模型中:


//PathToModel\LicenseTypes.php


public function instructors()

{

    return $this->belongsToMany('PathToModel\Instructors', 'instructors_license_types');

}

通過這種方式,您將能夠刪除代碼中的 foreach 語句之一:


$user = User::find($id);

if($user->instructor){

    $tmp = [];

    foreach ($user->instructor->license_types as $data) {

        array_push($tmp, [$data->id, $data->type]);

    }

    $user->types = $tmp;

}

這只是跳過數據透視表(instructos_license_types),有關這方面的更多信息,您可以在此處查看文檔。


查看完整回答
反對 回復 2021-07-02
  • 2 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號