Laravel Eloquent: обнаружение пусто или количество

Главный вопрос заключается в том, как определить, что результат красноречивой коллекции пуст или нет, что предлагает laravel для распознавания этого?

У меня есть два разных вопроса по этому поводу, может быть, они связаны друг с другом или нет,

Первый:

Как я могу получить результат методов $result = $user->delete() ИЛИ $result = $user->save();?

Я имею в виду проверить, выполнена ли операция или НЕ

Правильно или достаточно использовать для этого if($result){...}?

Второй:

Как правильно получить $result =User::where(conditions)->get() пусто или нет?

Пожалуйста, покажите мне правильный способ, который охватывает все случаи,


person Hamed Yarandi    schedule 08.08.2018    source источник
comment
Во-первых, всегда обращайтесь к документации API или блоку PHPDoc. В нем должно быть указано, какой тип/значение возвращаемого значения следует ожидать.   -  person Devon    schedule 08.08.2018


Ответы (4)


№1

if($user->delete())
  return true;
    else
  return false;

if($user->save()){
  return true;
}

№2

Чтобы определить, есть ли какие-либо результаты, вы можете выполнить одно из следующих действий:

if (!$user->isEmpty()) { }
if ($user->count()) { }
if (count($user)) { }

Примечания/ссылки

http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_first http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_isEmpty http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_count http://laravel.com/api/5.6/Illuminate/Database/Eloquent/Collection.html#method_count

person DsRaj    schedule 08.08.2018

Удаление и сохранение выполняются синхронно, поэтому, если не будет выброшено исключение, можно с уверенностью сказать, что они выполнены.

Для 2-го вопроса вы можете сделать:

User::where(conditions)->count();

Также есть isEmpty и isNotEmpty в коллекциях.

Другой способ - использовать exists/doesntExist:

User::where(conditions)->exists(); // or doesntExist()
person DigitalDrifter    schedule 08.08.2018

Первый

$user->delete() и $user->save() оба возвращают true или false. Таким образом, вы можете сделать так.

if($user->save())
    return true;
else
    return false;

Второй

По вашему утверждению.

$result = User::where(conditions)->get();    
if(count($result)
     return true;
else
     return false;
person Harun    schedule 08.08.2018

1) Да, все в порядке. Или вы можете использовать

if($user->delete()) {
  return true;
} else {
  return false;
}

2) Вы можете использовать функцию empty()

$result = User::where(conditions)->get()
if (!empty($result)) { 
 // if it is not empty, do the following...
}
person Community    schedule 08.08.2018