Можно ли использовать Accessor для сравнения в Laravel 4, например:
class User extends Eloquent {
// define Accessor
public function getSpecialNameAttribute()
{
return 'Joda';
}
}
$User = User::where('gender','=','male')->where('specialName','=','Joda');
?
Да, вы можете использовать его для фильтрации результатов запроса:
User
::where('gender','=','male')
->get()
->filter(function($item) {
return $item->specialName === 'Luke';
});
(!) Обратите внимание, что фильтрация будет применяться после запроса к БД, поэтому в случае больших данных это решение будет иметь проблемы с производительностью.
Для более подробной информации я гуглил для вас этот учебник Коллекции.
Также я предлагаю области запросов может быть полезным для выполнения вашей задачи наилучшим образом.
Нет, вы не можете использовать это таким образом.
Когда вы используете:
$user = User::where('gender','=','male')->where('specialName','=','Joda')->get();
ты попробуешь сравнить specialName
столбец в базе данных с Joda
строка.
Вы не можете использовать аксессор здесь, потому что аксессор может быть очень сложным, и тогда Laravel потребуется взять все данные из таблицы в базе данных (например, 100000 записей) и рассчитать аксессоры для всех них, чтобы получить для вас только те записи, которые вам нужны (например, 1). запись).
Вы можете использовать аксессор только тогда, когда у вас есть экземпляр объекта, и вы не сможете использовать его при запросе базы данных.