我有 3 個表:用戶(id:主鍵)、招聘人員(user_id:主鍵和外鍵)和公司(id:主鍵)。發生的情況是,招聘人員只是一個用戶,還有其他一些列,基本上他是與應用程式互動的人。
由于只能有一個 Recruiter 與 User 表關聯,因此我決定將 user_id 用作 FK 和 PK。公司和招聘人員之間存在一對多關系,一家公司可以有多個招聘人員。
我正在嘗試將招聘人員與一家公司聯系起來,但我無法這樣做。
我正在使用修補程式嘗試實作這些功能。我做的基本上是
$recruiter->company()->associate($company)
$recruiter-> save;
我得到了真實的輸出以及
App\Models\Recruiter {#4536
user_id: 4,
created_at: "2022-04-30 18:07:25",
updated_at: "2022-04-30 18:07:25",
company_id: null,
company: App\Models\Company {#4544
id: 1,
created_at: "2022-04-30 17:48:48",
updated_at: "2022-04-30 17:48:48",
name: "Apple",
company_image: "apple.png",
short_description: "Electronics company",
long_description: "Long description for electronics company",
email: "[email protected]",
establishment_year: "1950-01-01",
website_url: "www.apple.com",
location: "United States of America",
followers_count: 0,
company_size: 0,
},
}
如您所見,公司以某種方式關聯,但 company_id 未更新。這些是模型
用戶
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Model
{
use HasApiTokens, HasFactory, Notifiable;
public function recruiter()
{
return $this->hasOne('App\Models\Recruiter');
}
}
招聘人員
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Recruiter extends Model
{
use HasFactory;
public function user()
{
return $this->belongsTo('App\Models\User');
}
public function company()
{
return $this->belongsTo('App\Models\Company', 'company_id', 'user_id');
}
}
公司
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
use HasFactory;
public function recruiters()
{
return $this->hasMany('App\Models\Recruiter', 'company_id', 'user_id');
}
}
uj5u.com熱心網友回復:
招聘者模型的公司關系有一個錯誤:
代替:
public function company()
{
return $this->belongsTo('App\Models\Company', 'company_id', 'user_id');
}
它應該是
public function company()
{
return $this->belongsTo('App\Models\Company', 'company_id', 'id'); //or return $this->belongsTo('App\Models\Company', 'company_id');
}
BelongsTo 關系語法是
return $this->belongsTo(ParentModel::class, 'foreign_key', 'owner_key');
在哪里
foreign_key
是子模型/表上的外部 id 列(在這種情況下,招聘人員表上的“公司 ID”)。
owner_key
是父模型/表上的主鍵或參考列(在這種情況下,公司表上的“id”列)
您遇到的問題是因為公司表上沒有“user_id”列。
進一步參考:https ://laravel.com/docs/9.x/eloquent-relationships#one-to-one-defining-the-inverse-of-the-relationship
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/468836.html