Laravel检查是否设置了动态属性

时间:2015-09-25 17:55:45

标签: php laravel-5 dynamic-properties

我有一个属于bar的课程foo

public function bar(){ return $this->belongsTo('App\Models\Bar'); } 内我有:

$foo

我有一个bar_id null Foo的对象{/ 1}。

if ($this->bar->id == 1){ echo "in if"; } 内,我有一个if语句:

Trying to get property of non-object

毫不奇怪,我收到isset错误。所以我添加了对if(isset($this->bar) && $this->bar->id == 1){ echo "in if"; } 的调用。但是现在if中的代码永远不会被评估,因为if总是为false。我的新看起来像:

bar_id

设置if后,我仍未进入print bar_id。当我尝试$scope.myList时,我发现值不为空。我为什么不参加这个?

2 个答案:

答案 0 :(得分:1)

您可以进行更安全的检查:

if($this->bar instanceof \App\Models\Bar) {
    echo 'in if';
}

这将检查是否设置了bar属性并且实例化了相应的关系。

答案 1 :(得分:0)

我终于明白了。显然<div id="resultdiv"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>没有调用动态函数,这意味着该值不会被加载,这意味着它仍然是isset。为了解决这个问题,我做了以下几点:

null

由于我在访问$bar = $this->bar(); if (isset($this-> bar) && $this->bar->id == 1) { echo "in if"; } 函数之前调用$ this-&gt; bar(),当isset检查属性时,它会返回isset