dongnan4571 2017-10-22 21:39
浏览 62
已采纳

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

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 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))

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();
    });
}
  • 写回答

1条回答 默认 最新

  • doulizhi1247 2017-10-22 22:12
    关注

    Your Schedule to ShiftWorker model should be a belongsTo, since you have the shift_worker_id on it

    public function shift_worker()
    {
        return $this->belongsTo('App\ShiftWorker');
    }
    

    Also the zone should be a belongsTo relation

    public function zone()
    {
        return $this->belongsTo('App\Zone');
    }
    

    Don't checked if there are wrong relations in the other models, you need to check that out and clarify your concepts through the documentation and tutorials

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历