【发布时间】:2014-04-11 15:04:37
【问题描述】:
是否可以通过某种方式将参数传递给关系函数?
我目前有以下:
public function achievements()
{
return $this->belongsToMany('Achievable', 'user_achievements')->withPivot('value', 'unlocked_at')->orderBy('pivot_unlocked_at', 'desc');
}
问题在于,在某些情况下,它不会获取 unlocked_at 列并返回错误。
我尝试过类似的操作:
public function achievements($orderBy = true)
{
$result = $this->belongsToMany (...)
if($orderBy) return $result->orderBy(...)
return $result;
}
并将其称为:
$member->achievements(false)->(...)
但这不起作用。有没有办法将参数传递给该函数或任何方法来检查 pivot_unlocked_at 是否正在使用?
【问题讨论】:
-
你应该按照你说的去做。您确实需要记住,如果您将关系函数称为方法而不是属性,则它们的行为会有所不同。如果您将它们用作属性,您将获得一个结果集(集合),但如果您将它们作为方法调用,您将获得一个查询构建器。如果您想将参数传递给它们,显然必须将它们作为方法调用,因此请确保在调用代码中使用
->get():$member->achievements(true)->get()->(...)将等效于$member->achievements->(...)。 -
awsm @alexrussell。让我头疼....
-
很高兴我 2014 年的建议仍然适用 :)