2014-08-29 132 views
0

當我使用Laravel雄辯 - 關係(一對多)時,結果爲NULL。 我已經設置好的了在「work_hour」表,其中「workers_id」具有值2並沒有排在「工」表ID數據= 2 我跟着文檔「Laravel relationships使用Laravel雄辯關係(一對多)返回NULL

我的模式是這樣的:

public function up() 
    { 
     Schema::create('work_hour', function($table){ 
      $table->increments('id'); 
      $table->integer('worked_hour'); 

      $table->time('worked_from'); 
      $table->time('worked_to'); 
      $table->integer('workers_id')->unsigned(); 
      $table->foreign('workers_id')->references('id')->on('workers'); 
      $table->integer('workday_id'); 
      $table->integer('offer_id'); 
     }); 
    } 

PS:columns workday_id,offer_id arent set foreign,yet!

模型是這個樣子的:

class Worker extends Eloquent{ 

    protected $fillable = ['first_name', 'last_name']; 

} 

class Workhour extends Eloquent{ 

    protected $table = 'work_hour'; 

    public function worker(){ 
     return $this->belongsTo('Worker','workers_id'); 
    } 

} 

控制器 PS:我找遍了同樣的問題上是這樣,我嘗試了一些意見,然後我評論他們出去

class WorkerController extends BaseController { 
    protected $table = 'workers'; 
.... 
    public function show($id){ 
     $worker  = Worker::find($id); 

    // $workhour = Workhour::where('workers_id','=',$worker->id)->get(); 
    // casting the result: works $workhour->toArray() 

    // $workhour = Worker::find($id)->with('workhour')->get(); 
    //Call to undefined method Illuminate\Database\Query\Builder::workhour() 

    // $workhour = Worker::with('workhour')->where('id',2)->get(); 
    //Call to undefined method Illuminate\Database\Query\Builder::workhour() 

    $workhour = Worker::find($id)->workhour; 
    // null 

     dd($workhour); 
     return View::make('worker.show',['worker' => $worker,'workhour'=>$workhour]); 
    } 

    public function workhour(){ 
     return $this->hasMany('Workhour','workers_id'); 
    } 


} 

林調用「show.blade.php」與「.../public/worker/2」(Laravel 4) 我做錯了什麼?

+0

爲什麼在你的控制器中定義的雄辯關係('workhour()'方法和表名)? – kajetons 2014-08-29 07:00:51

+0

它返回'null',因爲'Worker'模型沒有定義關係。 – 2014-08-29 07:09:09

+0

@JarekTkaczyk_deczo_謝謝,您有權利,我已將workhour()函數添加到控制器中,而不是模型中,謝謝!現在它完美地工作,...你應該寫回答接受 – jeugen 2014-08-29 07:32:49

回答

0

您只需將關係添加到模型中沒有控制器:

class Worker extends Eloquent{ 

    protected $fillable = ['first_name', 'last_name']; 

    public function workhour(){ 
     return $this->hasMany('Workhour','workers_id'); 
    } 
}