简体   繁体   English

Laravel查询联接给出了尝试获取非对象的属性

[英]Laravel query join gives Trying to get property of non-object

My Child Class 我的孩子班

class Child extends Eloquent { ... public function campaign() { return $this->hasOne('Campaign'); class Child扩展Eloquent {...公共职能campaign(){return $ this-> hasOne('Campaign'); } ... } } ...}

Here is my query in Laravel: 这是我在Laravel中的查询:

    $query = Child::query();
    $query->select('children.*');
    $query->join('demands', 'demands.children_id', '=', 'children.id')->where('demands.accepted', '=', '1');
    $children = $query->orderBy(DB::raw('RAND()'))->take(4)->get();

In in foreach ($children as $child), I try to call echo $child->campaign->name and I got "Trying to get property of non-object" message. 在foreach中($ children作为$ child),我尝试调用echo $ child-> campaign-> name,并收到“试图获取非对象属性”消息。 $child->name works fine! $ child-> name工作正常!

So as it turned out, not every children had a campaign associated with it. 事实证明,并非每个孩子都有与之相关的运动。 Just add a little check in your foreach loop and you should be fine 只需在您的foreach循环中添加一点检查,就可以了

foreach($children as $child){
    if($child->campaign == null){
        continue;
    }
    // do stuff
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM