I have a page that currently takes 5 minutes to load. After a recent post I found out that there's almost 8000 query calls and the users told me to use eager loading, so I've tried to get it to work but for some reason I keep getting an error. Does anyone know how I'd go about fixing this? Thank you in advance!
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))
Here's the code I'm running in view:
<?php
$workers = \App\Schedule::with('shift_worker')->get();
foreach ($workers as $worker) {
echo $worker->shift_worker;
}
Here are all my models and tables:
Worker Model:
<?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');
}
}
Worker table:
public function up()
{
Schema::create('worker', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
Shift Model:
<?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');
}
}
Shift 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 Model:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ShiftWorker extends Model
{
protected $table = 'shift_worker';
public function schedule(){
return $this->belongsToMany('App\Schedule');
}
}
ShiftWorker 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();
});
}
Schedule Model:
<?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');
}
}
Schedule 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();
});
}