我正在嘗試將導航選單與導航型別同步,但出現錯誤 Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column ' navigation_menu_id' in 'field list' (SQL: insert into 'navigation_menus_navigation_types' (' navigation_menu_id', 'navigation_type_id') values (1, 1))
我不確定為什么沒有找到 navigation_menu_id。我正在使用帶有自定義外鍵 ID 的自定義資料透視表。
*遷移.php
Schema::create('navigation_menus_navigation_types', function (Blueprint $table) {
$table->id('navigation_menus_navigation_types_id');
$table->unsignedBigInteger('navigation_menu_id');
$table->foreign('navigation_menu_id')->references('navigation_menus_id')->on('navigation_menus');
$table->unsignedBigInteger('navigation_type_id');
$table->foreign('navigation_type_id')->references('navigation_menu_types_id')->on('navigation_menu_types');
$table->timestamps(); });
導航選單模型.php
class NavigationMenu extends Model {
protected $primaryKey = 'navigation_menus_id';
public function navigationType()
{
return $this->belongsToMany(NavigationMenuType::class,'navigation_menus_navigation_types','navigation_type_id',' navigation_menu_id');
}}
導航選單型別 Model.php
class NavigationMenuType extends Model{
protected $primaryKey = 'navigation_menu_types_id';
public function navigationMenu()
{
return $this->belongsToMany(NavigationMenu::class,'navigation_menus_navigation_types',' navigation_menu_id','navigation_type_id');
}}
頁面導航控制器.php
public function syncNavtypes(){
$this->seletedNavigationMenu = NavigationMenu::find($this->navMenuId);
$this->seletedNavigationMenu->navigationType()->sync($this->navTypeId);
$this->modelSyncNavigationTypesVisible = false;
$this->reset();
$this->resetValidation();}
uj5u.com熱心網友回復:
我認為你關系中的問題:
public function navigationType()
{
return $this->belongsToMany(NavigationMenuType::class,'navigation_menus_navigation_types','navigation_type_id',
' navigation_menu_id'); // here!!
}
問題是您在列名的開頭添加了額外的空格,目前 laravel 會將它放在字母上!!
你只需要洗掉額外的空間。
public function navigationType()
{
return $this->belongsToMany(NavigationMenuType::class,'navigation_menus_navigation_types','navigation_type_id',
'navigation_menu_id');
}
uj5u.com熱心網友回復:
如果沒有其他問題,問題就解決了。你會在你們的關系中留出額外的空間——
' navigation_menu_id'
return $this->belongsToMany(NavigationMenuType::class,'navigation_menus_navigation_types','navigation_type_id','navigation_menu_id');
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/351645.html
標籤:php 拉拉维尔 雄辩 数据透视表 laravel-livewire
上一篇:如何在laravel中更新陣列
下一篇:擁有API和網站時如何設定路由
