你好,我正在做一個專案,在這部分中,為了獲得一個依賴下拉串列,我想獲得附加到特定用戶的所有 ?Areas de Interesse?,通過他的 ID 獲得這個,即在資料透視表中.
這些是我的遷移:
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->foreignId('current_team_id')->nullable();
$table->string('profile_photo_path', 2048)->nullable();
$table->timestamps();
});
Schema::create('area_interesse', function (Blueprint $table) {
$table->id();
$table->string('area_interesse');
$table->string('area_interesse_ing');
$table->timestamps();
});
Schema::create('utilizador_interesse', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger("id_utilizador");
$table->foreign('id_utilizador')->references('id')->on('users')->onDelete('cascade');;
$table->unsignedBigInteger("id_interesse");
$table->foreign('id_interesse')->references('id')->on('area_interesse');
$table->timestamps();
});
還有我的模型:
class AreaInteresse extends Model
{
protected $table = "area_interesse";
public function users(){
return $this->belongsToMany(User::class, 'utilizador_interesse', 'id_interesse' , 'id_utilizador');
}
}
class User extends Authenticatable
{
public function interesses(){
return $this->belongsToMany(AreaInteresse::class, 'utilizador_interesse', 'id_utilizador', 'id_interesse');
}
}
在我的控制器中,我嘗試執行此操作,基于我看到的每個示例進行測驗,我試圖獲取與 ID 為 11 的用戶相關的所有 ?Areas de Interesse?
$interesses = AreaInteresse::with('users')
->whereHas('users', function($q){
$q->wherePivot('id_utilizador', 11);
})
->get();
但是我收到了這個錯誤,我不知道它為什么會發生,以及為什么它假設我試圖呼叫一個列?pivot?
Illuminate\Database\QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pivot' in 'where clause' (SQL: select * from `area_interesse` where exists (select * from `users` inner join `utilizador_interesse` on `users`.`id` = `utilizador_interesse`.`id_utilizador` where `area_interesse`.`id` = `utilizador_interesse`.`id_interesse` and `pivot` = id_utilizador))
uj5u.com熱心網友回復:
“我正在嘗試獲取與 ID 為 11 的用戶相關的所有 ?Areas de Interesse?”
這正是在模型之間定義關系的原因。只需實體化用??戶,然后獲取相關模型:
$user = User::findOrFail(11);
$interesses = $user->interesses;
正如評論中提到的,值得在此重復,您應該呼叫您的類Utilizadore而不是User,或者更改表和列名稱以匹配類的名稱。
uj5u.com熱心網友回復:
將用戶關系更改為:
public function users() {
return $this->belongsToMany(User::class, 'utilizador_interesse', 'id_interesse' , 'id_utilizador')->withPivot('id_utilizador');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399440.html
上一篇:LaravelSpatie語法錯誤,意外標記“只讀”
下一篇:將陣列添加到值
