Что касается запросов к области видимости, предполагается ли это поведение, возвращающее значение falsey
, будет возвращено возвращаемое Eloquent\Builder
?Как вернуть значения false из запроса Scope в Laravel 4?
Если я возвращаю значение non-falsey
(скажем, число, строка, массив и т. Д.), Он вернет фактическое значение (будь то число, строка, массив и т. Д.), Но если я верну false, 0, возвращает Eloquent \ Builder.
Есть ли способ обойти это и вернуть правильный тип, когда falsey
вместо объекта типа построитель?
отведенной Test Case
В модели
class MyModel extends Eloquent
{
public function scopeTestFalse{
return 0;
}
public function scopeTestTrue()
{
return 99;
}
}
В пути
var_dump(MyModel::scopeTestFalse()); // object(Illuminate\Database\Eloquent\Builder)
var_dump(MyModel::scopeTestTrue()); // int(99)
Вы объявили эти функции «статическими»? приведенный выше пример отлично подходит для меня, используя laravel 4.1 на PHP 5.3.27 – cecilozaur
Они не статичны. Когда вы говорите, что все нормально, что возвращает scopeTestFalse? – Chris
'int (0)' другой возвращает 'int (99)', , чтобы объявить все функции static, поскольку Eloquent реализует функцию __callStatic() (которая запускается при каждом попытке доступа к статическому методу, который не является частью класс, который вы вызываете). Надеюсь, что это имеет смысл. – cecilozaur