2014-09-02 147 views
1

不確定爲什麼Laravel正在執行循環,直到內存不足。我試圖創建一個與我的模型有很多關係,但它只是給我一個白色的屏幕。這裏是我的三個型號Laravel HasMany上的白色屏幕

Contractor.php

class Contractor extends Eloquent { 
    protected $table = 'contractors'; 

    public function contractorTrades() { 
      return $this->hasMany('ContractorTrade', 'contractor_id', 'id'); 
    } 
} 

ContractorTrade.php

class ContractorTrade extends Eloquent { 
    protected $table = 'contractor_trades'; 

    public function contractor() { 
      return $this->belongsTo('Contractor'); 
    } 
} 

Trade.php

class Trade extends Eloquent { 
    protected $table = 'trades'; 
} 

如果我打電話

Contractor::first()->contractorTrades(); 

我的應用程序內存不足,崩潰在白色屏幕上沒有錯誤。在我的調試過程中,我做到了這一點,因此在嘗試hasManyThrough之前我只測試了hasMany,但仍然無法使其工作。當我通過Artisan運行它時,它看起來就像一遍又一遍地循環着。

+0

您是否嘗試從hasMany()調用中移除contractor_id和id?你也可以請張貼表創建SQL,我想在我的機器上重現這一點。最後,你有沒有在你的配置文件中打開調試? – 2014-09-02 21:14:13

+0

你有'newQuery'方法嗎?或者可能是全球範圍或類似的東西?否則,這個調用無法循環。顯示你在那裏的整個代碼。 – 2014-09-02 22:12:49

+0

嘿,所以我想出了一個問題,但它並沒有解決我的最終問題。 由於某種原因,如果我打電話給 - > contractorTrades();在視圖中而不是 - >承包商的交易;我有whitescreen問題。 我的問題仍然存在,但關係不正常。當我打電話給$ contractor-> trades時,發生以下SQL: 從'trades'內部連接'contractor_trades'''id' ='trades'選擇'trades'。*,'contractor_trades'.'contractor_id'' '.'''其中'contractor_trades'.'contractor_id' =? [bindings] => Array([0] => 6)[time] => 1.53) – bertmaclin 2014-09-03 14:20:41

回答

0

問題已解決。這對於像我這樣來自Rails背景的人可能會有用。我對這個問題的看法是錯誤的。

我重組了我的數據庫應該是什麼樣子,並按照laravel網站上的belongsToMany函數說明。我現在正確地工作,它正在執行正確的內部聯接語句。