当我尝试返回模型时,Laravel 返回非法偏移类型

Posted

技术标签:

【中文标题】当我尝试返回模型时,Laravel 返回非法偏移类型【英文标题】:Laravel return Illegal offset type when I trie return a model 【发布时间】:2016-11-26 13:19:58 【问题描述】:

我正在使用一个从数据库返回多个数据的大型 json,我需要返回一个没有任何关系的整数模型,我只需要返回 LampModels 用这个很棒的 json 建模的所有记录.但是 Laravel 总是返回 Illegal offset type。

控制器

public function showAllUdiJson()
  
    $allLamps = LampModels::all();
    return Ilumination::with('street')
                        ->with('neighborhood')
                        ->with('iluminationinfo')
                        ->with('economyplan')
                        ->with('lamp')
                        ->with('reactor')
                        ->with('aluminumcable')
                        ->with('steelconduit')
                        ->with('alllamps', $allLamps)
                        ->with('ticket')->get();

  

灯模型

<?php

class LampModels extends \Eloquent 
    protected $fillable = [];
  protected $table = 'lampmodel';

照明

<?php

class Ilumination extends \Eloquent 
    protected $fillable = [];

  protected $table = 'ilumination';

  public function street()
  
    return $this->belongsTo('street');
  

  public function neighborhood()
  
    return $this->hasOne('neighborhood', 'id');
  

  public function iluminationinfo()
  
    return $this->hasOne('iluminationinfo');
  

  public function ticket()
  
    return $this->hasMany('ticket');
  

  public function economyplan()
  
    return $this->hasOne('economyplan', 'id' ,'street_id');
  

  public function lamp()
  
    return $this->hasOne('lamp', 'id');
  

  public function reactor()
  
    return $this->hasOne('reactor', 'id');
  

  public function aluminumcable()
  
    return $this->hasOne('aluminumcable', 'id');
  

  public function steelconduit()
  
    return $this->hasOne('steelconduit', 'id');
  

See the error

【问题讨论】:

请分享错误信息的全文/踪迹。查看LampModelsIlumination 类也可能会有所帮助。 @ThomasKelley 完成 【参考方案1】:

您的错误报告很糟糕,但您的 Ilumination 模型似乎没有 alllamps 方法。

您应该通过关系将 LampModels 附加到您的 Ilumination 模型,坚持做您正在做的事情,因为这是一种错误的方法。

【讨论】:

【参考方案2】:

我认为您访问了在遇到偏移错误的照明模型中创建的某处票证方法..

public function ticket()

  return $this->hasMany('ticket');

如果你想访问照明->票,你必须使用这个方法与循环。

foreach(illumination->tickets as ticket) 
     $field1 =  ticket->field1;

如果您仍然遇到任何问题,请在此处分享您的错误日志页面..

【讨论】:

以上是关于当我尝试返回模型时,Laravel 返回非法偏移类型的主要内容,如果未能解决你的问题,请参考以下文章

当我在 Laravel 上创建新行时出现非法偏移类型

Laravel'非法字符串偏移'leave_form'问题与数组

Laravel 文件管理器非法偏移类型

Laravel 8 基于类的模型工厂

Laravel删除模型自定义返回

Laravel 5 Model Inheritance - 获取子模式时返回父数据