0

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

function level()
{
   return $this->belongsTo('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.

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

有什么建议么?

4

1 回答 1

0

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

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

$query->wherelevel_id(X)

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

于 2013-08-09T06:36:52.243 回答