SQLSTATE [42S22] 尝试预先加载时出错
SQLSTATE[42S22] Error when trying to eager load
我有一个页面当前需要 5 分钟才能加载。在最近 post 之后,我发现有将近 8000 个查询调用,并且用户告诉我使用预先加载,所以我试图让它工作,但由于某种原因我不断收到错误。有谁知道我将如何解决这个问题?提前致谢!
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'shift_worker.schedule_id' in 'where clause' (SQL: select * from shift_worker
where shift_worker
.schedule_id
in (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, 63, 64, 65, 66, 67, 68, 69, 70, 71, 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, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 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, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 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, 312, 313, 314, 315, 316, 317, 318, 319))
这是我 运行 查看的代码:
<?php
$workers = \App\Schedule::with('shift_worker')->get();
foreach ($workers as $worker) {
echo $worker->shift_worker;
}
这是我所有的模型和 tables:
工人模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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('App\ShiftWorker');
}
}
工人table:
public function up()
{
Schema::create('worker', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
班次模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Shift extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'shift';
public function shift_worker()
{
return $this->belongsToMany('App\ShiftWorker');
}
}
移位Table:
public function up()
{
Schema::create('shift', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('time');
$table->string('type');
$table->timestamps();
});
}
ShiftWorker 模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ShiftWorker extends Model
{
protected $table = 'shift_worker';
public function schedule(){
return $this->belongsToMany('App\Schedule');
}
}
轮班工人Table:
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 Illuminate\Database\Eloquent\Model;
class Schedule extends Model
{
protected $table = 'schedule';
public function shift_worker()
{
return $this->hasMany('App\ShiftWorker');
}
public function zone()
{
return $this->hasMany('App\Zone');
}
}
日程安排 Table:
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('App\ShiftWorker');
}
此外,区域应该是 belongsTo 关系
public function zone()
{
return $this->belongsTo('App\Zone');
}
不要检查其他模型中是否存在错误关系,您需要检查并通过 documentation 和教程
澄清您的概念
我有一个页面当前需要 5 分钟才能加载。在最近 post 之后,我发现有将近 8000 个查询调用,并且用户告诉我使用预先加载,所以我试图让它工作,但由于某种原因我不断收到错误。有谁知道我将如何解决这个问题?提前致谢!
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'shift_worker.schedule_id' in 'where clause' (SQL: select * from
shift_worker
whereshift_worker
.schedule_id
in (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, 63, 64, 65, 66, 67, 68, 69, 70, 71, 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, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 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, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 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, 312, 313, 314, 315, 316, 317, 318, 319))
这是我 运行 查看的代码:
<?php
$workers = \App\Schedule::with('shift_worker')->get();
foreach ($workers as $worker) {
echo $worker->shift_worker;
}
这是我所有的模型和 tables:
工人模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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('App\ShiftWorker');
}
}
工人table:
public function up()
{
Schema::create('worker', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
班次模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Shift extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'shift';
public function shift_worker()
{
return $this->belongsToMany('App\ShiftWorker');
}
}
移位Table:
public function up()
{
Schema::create('shift', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('time');
$table->string('type');
$table->timestamps();
});
}
ShiftWorker 模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ShiftWorker extends Model
{
protected $table = 'shift_worker';
public function schedule(){
return $this->belongsToMany('App\Schedule');
}
}
轮班工人Table:
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 Illuminate\Database\Eloquent\Model;
class Schedule extends Model
{
protected $table = 'schedule';
public function shift_worker()
{
return $this->hasMany('App\ShiftWorker');
}
public function zone()
{
return $this->hasMany('App\Zone');
}
}
日程安排 Table:
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('App\ShiftWorker');
}
此外,区域应该是 belongsTo 关系
public function zone()
{
return $this->belongsTo('App\Zone');
}
不要检查其他模型中是否存在错误关系,您需要检查并通过 documentation 和教程
澄清您的概念