SQLSTATE[42S22]尝试加载时出错



我有一个页面当前需要5分钟才能加载。在最近的一篇帖子中,我发现有近8000个查询调用,用户告诉我使用急切加载,所以我试图让它发挥作用,但由于某种原因,我一直遇到错误。有人知道我会怎么解决这个问题吗?提前谢谢!

SQLSTATE[42S22]:未找到列:1054"where子句"中的未知列"shift_worker.schedule_id"(SQL:从shift_worker中选择*,其中shift_worker.schedule_id位于(1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19、20、21、22、23、24、25、26、27、28、29、30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、46、47、48、49、50、51、52、53、54、55、56、57、58、59、60、61、62、64、65、66、67、68、69、70、72、73、74)75、76、77、78、79、80、81、82、83、84、85、86、87、88、89、90、91、92、93、94、95、96、97、98、99、100、101、102、103、104、105、106、107、108、109、110、111、112、113、114、115、116、117、118、119、120、121、122、123、124、125、126、127、128、129、130、131、132、134、135、136、137、138、139、140、141、142、143、144、145、146、147、148、149、150、151、152、153、154、155、156、158、159、160、161、162、163、164、166、167、168、169、170、171、172、173、174、175、176,177178179180181,182、183、184、185、186、187、188、189、190、191、192、193、194、195、196、197、198、199、200、201、202、203、204、205、206、207、208、209、210、211、212、214、215、216、217、218、219、220、221、222、223、224、225、226、227、228、229、230、231、232、233、234、235、236、237、239、240、241、242、243、244、246、247、248、249、250、251、252、253、254、255、256,257、258、259、260、261,262、263、264、265、266、267、268、269、270、271、272、273、274、275、276、277、278、279、280、281、282、283、284、285、286、287、288、289、290、291、292、293、294、295、296、297、298、299、300、301、302、303、304、305、306、307、308、309、310、311、313、314、315、316、317、318)

以下是我在视图中运行的代码:

<?php
$workers = AppSchedule::with('shift_worker')->get();
foreach ($workers as $worker) {
echo $worker->shift_worker;
}

这是我所有的模型和表格:

工人模型:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Worker extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'worker';
protected $fillable = ['name'];
public function shift_worker()
{
return $this->belongsToMany('AppShiftWorker');
}
}

工作表:

public function up()
{
Schema::create('worker', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}

班次型号:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Shift extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'shift';

public function shift_worker()
{
return $this->belongsToMany('AppShiftWorker');
}
}

班次表:

public function up()
{
Schema::create('shift', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('time');
$table->string('type');
$table->timestamps();
});
}

轮班工人模式:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class ShiftWorker extends Model
{
protected $table = 'shift_worker';
public function schedule(){
return $this->belongsToMany('AppSchedule');
}
}

轮班工人表:

public function up()
{
Schema::create('shift_worker', function (Blueprint $table) {
$table->increments('id');
$table->integer('worker_id')->unsigned();
$table->foreign('worker_id')->references('id')->on('worker')
->onDelete('cascade')->onUpdate('cascade');

$table->integer('shift_id')->unsigned();
$table->foreign('shift_id')->references('id')->on('shift')
->onDelete('cascade')->onUpdate('cascade');
$table->boolean('monday');
$table->boolean('tuesday');
$table->boolean('wednesday');
$table->boolean('thursday');
$table->boolean('friday');
$table->boolean('saturday');
$table->boolean('sunday');
$table->timestamps();
});
}

时间表型号:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Schedule extends Model
{
protected $table = 'schedule';
public function shift_worker()
{
return $this->hasMany('AppShiftWorker');
}
public function zone()
{
return $this->hasMany('AppZone');
}
}

时间表:

public function up()
{
Schema::create('schedule', function (Blueprint $table) {
$table->increments('id');
//Assign workers shift_worker to
$table->integer('shift_worker_id')->unsigned();
//Zone they can work
$table->integer('zone_id')->unsigned();
$table->string('day');
//Date the person can work
$table->date('date');
$table->timestamps();
});
}

您的Schedule to ShiftWorker模型应该是belongsTo,因为它上有shift_worker_id

public function shift_worker()
{
return $this->belongsTo('AppShiftWorker');
}

此外,该区域应为归属关系

public function zone()
{
return $this->belongsTo('AppZone');
}

不要检查其他模型中是否存在错误的关系,你需要检查一下,并通过文档和教程澄清你的概念

最新更新