我正在将应用程序部署到生产环境,但它没有按预期工作。我已将问题范围缩小到 Controller 中该循环内的一行;
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
}
我得到的错误是在非对象上调用成员函数attributesToArray()
。这看起来很疯狂,因为——正如老话所说——它在我的机器上运行良好。
我的开发者。环境是 PHP 5.5.21 上的 Ubuntu trusty64,我的产品是 RedHat Linux PHP 5.5.11。我认为这些差异非常小(也许我错了?)。
如果我执行print_r($temp_table_data()
),那么我会返回一个大集合。两台服务器上的情况相同。因此,在某些时候,它会不再喜欢付款
(这是一个方法)或 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');
}
最佳答案
其中一个 tempTable
模型没有 Payment
并且 attributesToArray()
方法失败。
尝试一下,看看是否有效。
foreach($temp_table_data as $a_payment) {
$payment = $a_payment->payment->first();
if(!is_null($payment)){
$payments[] = $payment->attributesToArray();
}
}
关于php - Laravel 方法 attributeToArray() 未在生产环境中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938239/