我有一个属于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
时,我发现值不为空。我为什么不参加这个?
答案 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
。