2014-09-02 150 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函数说明。我现在正确地工作,它正在执行正确的内部联接语句。