php - Laravel 方法 attributeToArray() 未在生产环境中运行

标签 php laravel laravel-5

我正在将应用程序部署到生产环境,但它没有按预期工作。我已将问题范围缩小到 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/

相关文章:

php - javascript 相当于数组的 php max

javascript - 在 Ajax php 和 mysql 中读取响应

php - LAMP PHP 配置

php - Laravel 参数太多,调度时预期参数为 "command"

mysql - 将 sql 原始查询转换为 Eloquent 关系

php - PHP 类中的错误处理

php - 从外部选择框传入值时 MySQL 查询无效

javascript - laravel中使用ajax jquery将数据添加到数据库

javascript - Vue 模板未渲染(控制台中没有错误)

php - 我应该使用 Laravel 的集合形式还是传统的 html 形式?哪个更好?