我在从控制器获取数据到blade.php文件时遇到了问题,他们给出了一个未定义变量$PLANS的错误.

DalyTaskPlanController.php

public function dailyTaskPlan()
    {
        $plans = $this->plans = DailyTaskPlan::select(
        'projects.project_name',
        'daily_task_plans.*',
        'tasks.heading',
        'users.id')
            ->leftJoin('projects', 'daily_task_plans.project_id', '=', 'projects.id')
            ->leftJoin('tasks', 'daily_task_plans.task_id', '=', 'tasks.id')
            ->join('users','daily_task_plans.user_id', '=','users.id')
            ->take(4)
            ->get();
        return view('dailytaskplan::dashboard', compact('plans'));
}

在查看文件中,它们会给出一个错误:未定义变量

  @foreach ($plans as $plan)
                       
          <tr>
              <td class="pl-25">{{ $plan->project_name }}</td>
              <td class="pl-25">{{ $plan->heading }}</td>
              <td class="pl-25">{{ $plan->date }}</td>
              <td class="pl-25">{{ $plan->estimate_hours }} hrs {{ $plan->estimate_minutes }} mins</td>
              <td class="pl-25">{{ $plan->memo }}</td>
          </tr>
  @endforeach

我试着制作特征文件夹,并为其他路径中的模块提供另一条路径,它们工作得很好.但在主干道上,这并不起作用.

推荐答案

$plans变量似乎是NULL,要么提供一个缺省值,如:

return view('dailytaskplan::dashboard', [
    'plans' => $plans ?? [],
]);

或者实现并使用->getOrFail(),它提供了更好的错误信息.

Example getOrFail

<?php

namespace App\Providers;

use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    // ...

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // ...
        
        EloquentBuilder::macro('getOrFail', function () {
            return tap($this->get(), function (Collection $result) {
                if ($result->count() < 1) {
                    throw (new ModelNotFoundException)->setModel(
                        get_class($this->model)
                    );
                }
            });
        });
    }
}

Note Laravel有许多OrFail个带后缀的助手,但getOrFail个不存在,因此我增加了一个;-)

Php相关问答推荐

此行动未经授权.升级Laravel时

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

添加登录:需要app.yaml仍然允许所有拥有Google帐户的人访问

Laravel:测试命令时无法获取工作通知::AssertSentTo

在Laravel中修改JSON输出

PHP Laravel Web应用启动时间&>15秒

未定义的类型';PDF';在Laravel 8

在WooCommerce中以编程方式添加特定产品后,将价格设置为零

如何在其他数组php中创建具有关联数组的数组

关于Laravel缓存出现的错误

PHP 中的 libgd 无法读取 Apache 配置中的 SetEnv GDFONTPATH

PHP 简单 XML Xpath 上移树(带有名称的父级)

在 Botiga 主题模板中添加复选框到政策行.Woocommerce

自定义主键值未正确显示

Eloquent 的模型更新了它应该 laravel php 的更多行

在 DomPDF 和 Laravel 中使用内联 css

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

使用 splat 运算符时按引用传递 (...)

如何在 Laravel 中验证多个输入?