Laravel isEmpty不起作用

问题描述 投票:1回答:4

当我尝试使用isEmpty函数检查模型为空时,Laravel 5.6中存在错误。

模型:

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)
php laravel
4个回答
3
投票

另一种方法是使用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


1
投票
@if(!$project->id)
  @method('PUT')
@endif

我以相同的方式使用表单 - 一个用于创建和更新的视图,但在put / post中没有区别。并使用value =“{{old('name',$ item-> name)}}”在这里查看例如:https://github.com/LaraModulus/admin-pages/tree/master/src


1
投票

isEmpty()不是您班级的有效函数。

你的意思是使用php函数empty()?

在这种情况下,尝试以下方法:

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

请注意,与$ project === null相比,empty($ project)的优化程度较低。


0
投票

调节器

这样做

$project = Projects::all();

$ project-> isEmpty()将起作用

这样你就可以为模型初始化一个对象,而不是从模型中获取记录。

$project = new Projects;
© www.soinside.com 2019 - 2024. All rights reserved.