首页 > 解决方案 > Laravel 多对多关系引发 SQL 错误

问题描述

当我打这个电话


  foreach ($phones->cases as $case) {            
  
  }

我收到此错误。不知何故,它正在将 lk_case 表名更改为 l_k__case_id。

最终目标是我希望能够在刀片模板中显示电话列表及其详细信息,并在循环时显示他们拥有的手机壳及其详细信息。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'phone_cases.l_k__case_id' in 'field list' 
(SQL: select `lk_case`.*, `phone_cases`.`phone_id` as `pivot_phone_id`, 
`phone_cases`.`l_k__case_id` as `pivot_l_k__case_id` from `lk_case` 
inner join `phone_cases` on `lk_case`.`id` = `phone_cases`.`l_k__case_id` 
where `phone_cases`.`phone_id` in (11063))

这是三个模型。
手机手机壳 LK_Case

namespace App;

use Illuminate\Database\Eloquent\Model;

class Phone extends Model
{
    protected $table = 'phone';

    public $primaryKey = 'id';

    protected $fillable = [
        'title',
        ]; 

    public function cases(){

        return $this->belongsToMany(LK_Case::class,'phone_cases');  
        
    }

}



namespace App;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class PhoneCase extends Model
{
    use HasFactory;

    protected $primaryKey = ['phone_id', 'case_id'];
    public $incrementing = false;
    protected $fillable = ['phone_id','case_id'];  
}

namespace App;

use Illuminate\Database\Eloquent\Model;

class LK_Case extends Model
{
    protected $table = 'lk_case';

    public $primaryKey = 'id';

    protected $fillable = [
        'id','phone_case_name'
    ];

    public function phones()
    {
        return $this->belongsToMany(Phone::class, 'phone_cases'); 
    }
    
}

标签: phpmysqllaraveleloquentrelationship

解决方案


推荐阅读