【问题标题】:Laravel - Returning an Eloquent Instance SyntaxLaravel - 返回一个雄辩的实例语法
【发布时间】:2017-08-08 12:20:29
【问题描述】:

所以我有一个带有构造函数的控制器,它使用反射注入 Eloquent 模型依赖项:

public function __construct(Analysis $analysis)
{
    $this->analysis = $analysis;
}

这个依赖还有其他通过反射注入的 Eloquent Model 依赖:

use App\Load;
use App\Parameter;

class Analysis extends Model
{
    protected $loads;
    protected $parameters;

    public function __construct(Load $loads, Parameter $parameters)
    {
        $this->loads = $loads;
        $this->parameters = $parameters;
    }
}

当我像这样倾倒或死去时:

dd($this->analysis['loads']);

它以 Eloquent 实例的形式返回 Load(如我所愿)。

但是当我像这样尝试转储或死亡时:

dd($this->analysis->loads);

它只是返回一个空集合。我无法弄清楚为什么一个有效而另一个无效?我在教程视频中看到了后一种语法。

我不知道在帖子标题中应该放什么,因为我不知道不同语法的术语(analysis['loads'] vs analysis->loads)。

【问题讨论】:

  • 第一个方法描述你的 Eloquent 实例是“数组”类型,而第二个描述你的 Eloquent 实例是“对象”类型
  • 您是否定义了分析模型和负载模型之间的关系。
  • 你传递给模型的构造函数的是什么? ...为什么?
  • @KelvinC 是的,Load 属于 Analysis,Analysi 有很多 Loads。
  • @nikhil_gandhi 感谢您的回复,您的回答为我提供了错误的线索...

标签: php laravel eloquent


【解决方案1】:

因此将负载和参数属性更改为public 意味着

dd($this->analysis->loads);

然后会根据需要返回一个 Eloquent 实例。可能不是最好的解决方案。我想正确的方法是使用 getter 和 setter...

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2018-04-11
    • 1970-01-01
    • 2015-12-17
    • 2021-09-15
    相关资源
    最近更新 更多