使用has()方法一个Laravel BelongsTo关系

时间:2013-08-07 22:12:50

标签: laravel laravel-4 eloquent

我有一个Activity模型和一个Level模型。每个Activity都有一个Level,所以我在Activity上有以下内容:

function level()
{
   return $this->belongsTo('Level');
}

这是在Level:

function activities()
{
   return $this->hasMany('Activity');
}

然后我需要搜索具有特定级别的活动,所以我这样做:

$searchData = 'beginner';

$query = $query->has(array('level' => function($query) use ($searchData)
{
    $query->where('name', 'LIKE', '%' . $searchData . '%');
}));

使用它会抛出一个LogicException:

Has method invalid on "belongsTo" relations.

所以我要么关系错了,要么我需要以不同的方式构建查询。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

只是为了关闭这个,在@TorkilJohnsen的评论中回答了它。

我从应用程序的另一部分获取了具有多对多关系和数据透视表的代码。从头开始再次查看它,Activity模型有一个level_id,所以我可以这样做:

$query->wherelevel_id(X)

只是出于兴趣,如果我没有ID,而是在Level表中有一个条目的字符串,有没有办法以我尝试的方式查找它?大概是某种闭包,它会查找关卡名称并返回ID?