我正在将我的应用程序部署到我的生产环境中,但它没有按预期工作。我已经将问题缩小到我控制器中这个循环中的一行;
foreach($temp_table_data as $a_payment) {
//array_push($payments, $a_payment->payment); //big collection object
array_push($payments, $a_payment->payment->first()->attributesToArray()); //smaller object
}
我得到的错误是call to a member function attributesToArray() on a non object
。这似乎很疯狂,因为 - 正如那句老话所说 - 它在我的机器上运行良好。
我的开发。环境是PHP 5.5.21上的Ubuntu trusty64,我的产品是RedHat Linux PHP 5.5.11。我认为这些差异很小(也许我错了?)。
如果我做print_r($temp_table_data()
那么我会收到一个大集合。两台服务器都一样。所以在某些时候它只是停止喜欢payment
(这是一种方法)或first()
以下是我的TempTable.php模型的部分付款方式;
public function payment(){
return $this->hasMany('App\Models\Payment', 'Vendor ZIP', 'postcode');
}
我的Payment.php
模型(部分内容);
class Payment extends Model {
protected $table = 'headquarters_data';
public function tempTable()
{
return $this->belongsTo('App\Models\TempTable', 'postcode', 'Vendor ZIP');
}
答案 0 :(得分:1)
问题是在制作中你可能已经改变了数据库中的数据并调用第一个()方法返回 null 然后你试图调用 attributesToArray ()在 null 上,这是错误的!
你应该在调用attributesToArray()之前做一个 isset()函数。
if(isset($a_payment->payment->first()))
array_push($payments, $a_payment->payment->first()->attributesToArray());
答案 1 :(得分:1)
其中一个for(var i = 0; i < 5; i++){
var cha = document.createElement('div');
$(cha).css('background','url(img/stand.gif)');
cha.addEventListener('click',function(){
$(cha).css('background','url(img/walk.gif)');
setTimeout(function(p = cha){
$(p).css('background','url(img/walk.gif)');
},8000);
});
}
模型没有tempTable
且Payment
方法失败。
试试这个,看它是否有效。
attributesToArray()