Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel isEmpty doesn't work

Tags:

php

laravel

There is an error in Laravel 5.6 when I try to check is a model empty with isEmpty function.

Model:

namespace App\Models\Projectmanagement;

use Illuminate\Database\Eloquent\Model;

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

Controller:

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

View:

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

The idea is that I reuse edit.blade view file for creating and updating data, so I need to check if a model is empty to make proper changes in the view file.

But in this case, Laravel 5.6 throws an error:

Method Illuminate\Database\Query\Builder::isEmpty does not exist. (View: /var/www/resources/views/pages/projects/edit.blade.php)
like image 894
Ruslan Skaldin Avatar asked Feb 10 '26 08:02

Ruslan Skaldin


2 Answers

Another way to get this is using Model exists variable. For example:

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

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

Ref: https://laravel.com/api/5.6/Illuminate/Database/Eloquent/Model.html

like image 145
Laerte Avatar answered Feb 13 '26 09:02

Laerte


isEmpty() is not a valid function on your class.

did you mean to use the php function empty()?

In that case try the following:

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

Note that empty($project) is less optimised compared to $project === null.

like image 38
Mkk Avatar answered Feb 13 '26 10:02

Mkk



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!