我的应用目前正在运行Laravel Framework version 4.2.16
。我试图在whereHas
方法中使用嵌套关系,并发现在我的Laravel版本中这是不可能的。
但是,当我访问当前Builder.php
文件的github页面时,我注意到代码已添加到框架中以允许whereHas
方法中的嵌套关系。这是文件的链接:
https://github.com/laravel/framework/blob/4.2/src/Illuminate/Database/Eloquent/Builder.php
将这些更新添加到项目中的正确方法是什么?我跑了composer update
,但被告知有Nothing to install or update
。如何将此更新的代码正确地添加到我的项目中?
我想我只是对框架更新代码时实际发生的事情感到困惑。这不意味着有新版本可用吗?也许我必须告诉作曲家使用特定的提交而不仅仅是我现在的版本约束"laravel/framework": "4.2.*"
?
修改
我的应用版本中的has
方法是:
/**
* Add a relationship count condition to the query.
*
* @param string $relation
* @param string $operator
* @param int $count
* @param string $boolean
* @param \Closure|null $callback
* @return \Illuminate\Database\Eloquent\Builder|static
*/
public function has($relation, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
{
$relation = $this->getHasRelationQuery($relation);
$query = $relation->getRelationCountQuery($relation->getRelated()->newQuery(), $this);
if ($callback) call_user_func($callback, $query);
return $this->addHasWhere($query, $relation, $operator, $count, $boolean);
}
但是,Github上的has
方法是:
/**
* Add a relationship count condition to the query.
*
* @param string $relation
* @param string $operator
* @param int $count
* @param string $boolean
* @param \Closure|null $callback
* @return \Illuminate\Database\Eloquent\Builder|static
*/
public function has($relation, $operator = '>=', $count = 1, $boolean = 'and', Closure $callback = null)
{
if (strpos($relation, '.') !== false)
{
return $this->hasNested($relation, $operator, $count, $boolean, $callback);
}
$relation = $this->getHasRelationQuery($relation);
$query = $relation->getRelationCountQuery($relation->getRelated()->newQuery(), $this);
if ($callback) call_user_func($callback, $query);
return $this->addHasWhere($query, $relation, $operator, $count, $boolean);
}
如何正确地将这个新的has
方法拉入我的项目?