大佬教程收集整理的这篇文章主要介绍了Laravel 5.8 中的多对多关系错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当我尝试在 Laravel 中检索多对多关系数据时出现错误。错误信息是
sqlSTATE[23000]:违反完整性约束:1052 where 子句中的列 'ID' 不明确(sql:select * from jobs
where (not exists (select * from job_types
inner join {{ 1}} on job_types_jobs
.job_types
= ID
.job_types_jobs
其中 job_types_ID
.jobs
= ID
.{{1} } 和 job_types_jobs
.jobs_ID
为空)或存在(选择 * from job_types
内连接 deleted_at
on job_types
.job_types_jobs
= {{1 }}.job_types
其中 ID
.job_types_jobs
= job_types_ID
.jobs
和 ID
= 3 和 job_types_jobs
.{{1 }} 为空) 和 jobs_ID
liKE %%) 和 ID
.job_types
为空)
表格
JobTypes.PHP
deleted_at
Jobs.PHP
name
JobTypeController.PHP
jobs
查看
deleted_at
迁移
public function jobs() // children
{
// one type of job has many jobs
return $this->belongsToMany('App\Jobs'); // ID refer to jobs.ID
}
您偏离了 Eloquent 用于标识不同表中字段的默认命名方案。目前,您对列使用复数形式(例如 jobs_id
),但 Eloquent 假定使用单数形式 (´job_id`)。
在 job_job_type
迁移文件中,将所有列名称以及架构名称更改为单数名称。运行 migrate:refresh
(即更新数据库模式)后,Eloquent 将能够自动将关系映射到数据库上的模式。
Schema::create('job_job_type',function (Blueprint $table) {
$table->increments('id');
$table->integer('job_id')->unsigned()->index();
$table->integer('job_type_id')->unsigned()->index();
$table->foreign('job_id')->references('id')->on('jobs')->onDelete('cascade');
$table->foreign('job_type_id')->references('id')->on('job_types')->onDelete('cascade');
});
以上是大佬教程为你收集整理的Laravel 5.8 中的多对多关系错误全部内容,希望文章能够帮你解决Laravel 5.8 中的多对多关系错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。