Laravel 5.1试图获得非对象雄辩关系的属性,处理错误

时间:2015-08-14 13:02:02

标签: php laravel laravel-5 eloquent laravel-5.1

OrganizationsController.php

public function user_index()
{   
    if(!is_null(Organization::find(Auth::user()->player->organization))) 
    $organization = Organization::find(Auth::user()->player->organization->id);
    else $organization=null;

    return view('organizations.user_index', [ 'organization' => $organization ]);
}

当“玩家”没有“组织”时,为了避免“试图获取非对象的属性”,我使用了这段代码。但它似乎并不是很好。有更好的方法来获得这个?也许我错了,但是这个方法有一个无用的查询,我是对的吗?

表播放器:id,name

表组织:id,name,player_id

1 个答案:

答案 0 :(得分:1)

是的,对于此检查,您可能会执行一个不必要的SQL查询。如果你这样做,你可以摆脱这个:

if(Organization::find(Auth::user()->player->organization_id) 

而不是

if(!is_null(Organization::find(Auth::user()->player->organization))) 

通过这种方式,您可以在尝试从数据库中获取组织之前检查存储在播放器中的 organization_id