これはLaravel 5.2用です。私はこれらのコードの2つの部分の違いは分かりませんが、参照によって動作するように見えるものと、そうでないものがあります。この例では参照でLaravelのクエリオブジェクトを渡す
、クエリオブジェクトは、アクションを実行する場合はfalseをチェックするために私を強制的にメソッド呼び出しからの変更のどれを保持していない:
$query = new User();
$query = $this->processOrderByFields($query, $request, User::getOrderByFields());
if ($query === false) {
return $this->respondError(HTTP_UNPROCESSABLE_ENTITY);
}
public function processOrderByFields($query, $request, $availableFields)
{
# Get fields
foreach ($fields as $field) {
# Do things to the field...
if (# Not important) {
$query = $query->orderBy(# Field, # Direction);
} else {
$badFields[] = $field;
}
}
if ($badFields) {
return false;
} else {
return $query;
}
}
しかし、これは正常に動作します:
$query = new User();
$this->processInclude($query, $request, Client::getIncludeRelationships());
public function processInclude($query, $request, $objectRelationship)
{
if ($request->get('include') && is_array($request->get('include'))) {
$include = array_intersect($request->get('include'), $objectRelationship);
foreach($include as $relation) {
$query->with($relation);
}
}
}
私はこれがwith
メソッドの関係構築の一部と関係があると推測していますが、わかりません。