2017-10-22 18 views
0

로드하는 데 5 분이 걸리는 페이지가 있습니다. 최근 게시 한 후 거의 8000 건의 쿼리 호출이 있고 사용자가 열심히로드를 사용하라고 말한 것이므로 작동하도록 시도했지만 어떤 이유로 든 계속 오류가 발생합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 미리 감사드립니다.SQLSTATE [42S22] 열심히로드하려고 할 때 오류가 발생했습니다.

SQLSTATE [42S22]없는 컬럼 : 1,054 알 열은 '절'(SQL에서 'shift_worker.schedule_id'shift_worker에서 어디 shift_worker *를 선택한다.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,250251252253254255256257258259260,261,262,263,264,265,266, 272, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 290, 292, 293, 294, 295, 296, 297,

<?php 

$workers = \App\Schedule::with('shift_worker')->get(); 

foreach ($workers as $worker) { 
    echo $worker->shift_worker; 
} 
여기

내 모든 모델과 테이블은 다음과 같습니다 : 317, 318, 319)) 다음은

내가보기에 실행 해요 코드입니다

노동자 모델 :

<?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'); 
    } 

} 

노동자 테이블 :

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'); 
    } 
} 

시프트 테이블 :

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'); 
    } 
} 

ShiftWorker 테이블 :

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'); 
    } 

} 

스케줄 표 :

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(); 
    }); 
} 
+0

아 그게 무슨 뜻입니까? 난 그냥 열을 만든 다음 그것을 마이 그 레이션해야합니까 아니면 내가 schedule_id를 읽을 수 있도록 코드를 변경해야합니까? – Quazi

+0

흠 당신은 무엇을하려고합니까? –

+0

내 이전 [post] (https://stackoverflow.com/questions/46877277/my-page-takes-3-5-whole-minutes-to-load-how-can-posposibly-reduce-it) , 나는 호출의 끝에 약 8000 쿼리 호출이 있기 때문에 열심히 로딩하여 웹 사이트의 로딩 시간을 줄이라는 말을 들었다. 난 그냥 내 열심히로드를 테스트하고 내 메인 코드에서 사용하기 전에 그것을 배울려고. – Quazi

답변

1

일정에 ShiftWorker 모델은 belongsTo를해야한다 , s 인스 당신이 그것을

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

또한 영역이 다른 모델의 잘못된 관계가있는 경우

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

을 선택하지 마십시오 belongsTo를 관계를해야한다에, 당신이 체크 아웃 할 필요가 shift_worker_id 가지고 documentation 및 자습서를 통해 개념을 명확히하십시오

+1

정말 고마워요! 나는 그걸 8000 건에서 12 건으로 줄였습니다! – Quazi

+0

@quazi 좋은 직장 :) – ljubadr