Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 08.10.2013 09:55:18

Проверка результата обращения к модели

здравствуйте, подскажите как проверить на "пустоту" следующий тип запроса:

$find = User::where(...)->where(...)->...;

нужно узнать, пуст ли объект $find или нет. empty() не помогает, потому что фактически $find никогда не пуст, даже если в базе нет данных по условию. но надо узнать, вернул ли объект из базы или не вернул.

Не в сети

#2 08.10.2013 10:36:00

Re: Проверка результата обращения к модели

Чем заканчивается запрос («…»)? Если там get() — проверяйте результат на пустоту. Просто запрос без какого-то конечного действия (count, max и пр.) не имеет смысла, т.к. он никогда не выполнялся в БД и число строк неизвестно.

Не в сети

#3 08.10.2013 10:41:23

Re: Проверка результата обращения к модели

  1. Чем заканчивается запрос («…»)? Если там get() — проверяйте результат на пустоту. Просто запрос без какого-то конечного действия (count, max и пр.) не имеет смысла, т.к. он никогда не выполнялся в БД и число строк неизвестно.

если ставить в конце get(), то в $find возвращается Object ( [items:protected] ⇒ Array ( ) ) . а функция empty() видимо не считает это пустым, т.к. там items есть

Не в сети

#4 08.10.2013 10:52:32

Re: Проверка результата обращения к модели

все разобрался, спасибо

Не в сети

#5 08.10.2013 10:52:36

Re: Проверка результата обращения к модели

PHP
empty( $...->get()->toArray() )

Документация

Не в сети

#6 08.10.2013 10:54:07

Re: Проверка результата обращения к модели

я проверяю вот так $find->count(). если он меньше 1, то запись добавляю, иначе нет.

Не в сети

#7 08.10.2013 10:54:49

Re: Проверка результата обращения к модели

Можно и так.

Не в сети

#8 15.10.2013 21:21:16

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Проверка результата обращения к модели

здравствуйте, подскажите как проверить на "пустоту" следующий тип запроса:
$find = User::where(...)->where(...)->...;

->get();
это всё объект Illuminate\Database\Eloquent\Collection
и там есть методы прикольные

К примеру тот что вам нужен:

$actions = Action::get();
$actions->isEmpty();

все IDшники в виде массива достает

$actions->modelKeys()

находит модель в коллекции по ID

$actions->find(10)

Смотри коллекцию моделей
class Collection extends BaseCollection {
там куча методов

получаешь максимально значение любого поля

public function max($key)

и.т.д...
лучше раз глянуть, чем их тут перечислять


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#9 15.10.2013 23:49:53

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: Проверка результата обращения к модели

А версия какая Laravel ?
В 4-ой можно так проверять

if (User::whereId(10)->exists()) {}

Это равносильно вот этой конструкции

if (User::whereId(10)->count()) {}

Или вот так можно

try {
    $user = User::findOrFail(10);
}
catch (Illuminate\Database\Eloquent\ModelNotFoundException $e) {
    // Что-то делаем если модель не найдена
}

В 4-ке много новых методов для работы с моделями https://github.com/laravel/framework/bl … l.php#L403

Не в сети

Подвал раздела