Laravel isEmpty не работает - PullRequest
       9

Laravel isEmpty не работает

0 голосов
/ 25 апреля 2018

В Laravel 5.6 возникает ошибка, когда я пытаюсь проверить, пуста ли модель с функцией isEmpty.

Модель:

namespace App\Models\Projectmanagement;

use Illuminate\Database\Eloquent\Model;

class Projects extends Model
{
    protected $table = 'projects';
    public $timestamps = false;
}

Контроллер:

public function create()
{
    $project = new Projects;
    return view('pages.projectmanagement.projects.edit', [
        'project' => $project,
        'companies' => Company::all(),
    ]);
}

Вид:

<form method="post">
  {{ csrf_field() }}
  @if($project->isEmpty())
      @method('PUT')
   @endif
</form>

Идея состоит в том, что я повторно использую файл представления edit.blade для создания и обновления данных, поэтому мне нужно проверить, пуста ли модель, чтобы внести необходимые изменения в файл представления.

Но в этом случае Laravel 5.6 выдает ошибку:

Method Illuminate\Database\Query\Builder::isEmpty does not exist. (View: /var/www/resources/views/pages/projects/edit.blade.php)

Ответы [ 4 ]

0 голосов
/ 25 апреля 2018

Другой способ получить это - использовать переменную Model exists. Например:

//Case 1
$project = new Projects;
$project->exists; //Has false

//Case 2
$project = Projects::first();
$project->exists; //Has true

Ссылка: https://laravel.com/api/5.6/Illuminate/Database/Eloquent/Model.html

0 голосов
/ 25 апреля 2018

Контроллер

Сделайте так

$project = Projects::all();

$ project-> isEmpty () будет работать

Для этого у вас есть init объектмодель не получает записи из модели.

$project = new Projects;
0 голосов
/ 25 апреля 2018
@if(!$project->id)
  @method('PUT')
@endif

Я использую формы таким же образом - один вид для создания и обновления, но без разницы в пут / пост. И используя значение = "{{old ('name', $ item-> name)}}" Проверьте здесь, например: https://github.com/LaraModulus/admin-pages/tree/master/src

0 голосов
/ 25 апреля 2018

isEmpty () не является допустимой функцией в вашем классе.

Вы хотели использовать функцию php empty ()?

В этом случае попробуйте следующее:

<form method="post">
  {{ csrf_field() }}
  @if(empty($project))
      @method('PUT')
   @endif
</form>

Обратите внимание, что empty ($ project) менее оптимизирован по сравнению с $ project === null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...