Laravel如果没有选择多对多关系的数据

时间:2018-05-29 14:47:45

标签: laravel if-statement many-to-many

如何检查数据库中是否有数据
我的数据库看起来像这样

enter image description here

我的用户模型

public function monsters()
{
    return $this->belongsToMany('App\Monster')->orderBy('star');
}

我的控制器

public function list_monster_user()
{
    //GET USER LOGIN ID
    $id = Auth::user()->id;

    $monster_user = User::find($id);

    //IF DATA IS NOT EMPTY OR USER HAVE MONSTERS
    if(!is_null($monster_user->monsters))
    {
        return 'yes';
    }

    //IF DATA IS EMPTY OR USER DOESNT HAVE ANY MONSTER
    else
    {
        return 'nope';
    }
}

我正在使用ajax,因此结果将返回到ajax。
我没有得到我想要的回报。我知道我的if语句有问题。
但我无法理解。

1 个答案:

答案 0 :(得分:2)

由于您没有遵循命名约定,因此应在belongsToMany函数中指定所有字段。试试这个:

return $this->belongsToMany('App\Monster', 'karakter_has_monster', 'karakter_id', 'monster_id');

要检查结果,您可以使用count()。它会更快。

if($monster_user->monsters()->count() > 0) {
    //has monsters
}