【问题标题】:Laravel: Undefined propertyLaravel:未定义的属性
【发布时间】:2017-01-28 14:02:51
【问题描述】:

我有一个 laravel 项目,我已经开始编写管理方面的代码。我创建了一个中间件来检查他们的government_id是否> 0,如果不是,他们将被重定向到被拒绝的页面。

中间件:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;
use View;
use App\Database\Website\Roleplay\GovernmentRole;

class AdminAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::guest() || Auth::user()->roleplay->government_id == 0)
        {
            return redirect("denied");
        }

        if (Auth::check())
        {
            View::share('myGovernmentRole', GovernmentRole::where('id', Auth::user()->roleplay->government_id)->get());
        }

        return $next($request);
    }
}

现在我要问的问题是这个。

Undefined property: Illuminate\Database\Eloquent\Collection::$government_type

如你所见,我分享观点:

View::share('myGovernmentRole', GovernmentRole::where('id', Auth::user()->roleplay->government_id)->get());

在我看来,我这样做:

@if ($myGovernmentRole->government_type == 'junior_ministers'
                    || $myGovernmentRole->government_type == 'senior_ministers'
                    || $myGovernmentRole->government_type == 'higher_government'
                    || $myGovernmentRole->government_type == 'royalty')
                        <li class="dropdown">
                            <a href="#" clas="dsropdown-toggle profile-image" data-toggle="dropdown">
                                <i class="fa fa-user"></i> &nbsp;JuniorCP <b class="caret"></b></a>
                            <ul class="dropdown-menu">
                                <li><a href="/business/overview"><i class="fa fa-briefcase"></i> &nbsp;Business</a></li>
                            </ul>
                        </li>
                    @endif

在尝试获取government_type 列时似乎会发生这种情况,但我不知道为什么,我认为您可以这样做 -> 列在集合上并获取该列,我错了吗?

任何可以帮助的人,谢谢。使用 Laravel 5.3

【问题讨论】:

  • government_type 是否包含在 Model 的可填充数组中?
  • 受保护的 $fillable = [];我把它设置为一切。
  • 你没有尝试在 if 语句之前转储 Auth::user()-&gt;roleplay 吗?它显示了什么?
  • 这是一个大数组。我可以向你保证,这不是没有相关数据的任何数据库。
  • 谢谢@jycr753 解决了我的问题!

标签: php database laravel laravel-5.3


【解决方案1】:

只需将 View::share 命令放在 App\Providers\AppServiceProvider.php 文件的 boot() 方法中即可(注意将 get() 更改为 first())。

如果 guest 或government_id 为0,则此中间件将重定向。如果存在则不需要第二个...

【讨论】:

  • 真的不确定为什么这个答案在这里,它没有任何改变。仍然得到相同的输出。
猜你喜欢
  • 1970-01-01
  • 2019-06-13
  • 2016-12-29
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
相关资源
最近更新 更多