Попытка получить свойство ошибки необъекта при доступе к добавленному атрибуту - PullRequest
0 голосов
/ 08 сентября 2018

Предположим, что есть модель Website, и я хочу добавить метод доступа с именем min_withdraw, например:

class Website extends Authenticatable
{
    protected $primaryKey = 'website_id';
    protected $appends = ['min_withdraw'];

    protected $hidden = [
        'password', 'remember_token', 'min_withdraw'
    ];

    function getMinWithdrawAttribute ()
    {
        if (!empty($this->settingOf('website','min_withdraw_user'))) {
            return $this->settingOf('website','min_withdraw_user');
        }
        return 100;
    }
 }

Этот метод доступа использует метод settingOf(), чтобы получить параметр с именем min_withdraw_user. тело settingOf() похоже на:

    public function settingOf ($type, string $key, string $nestedKey = null)
    {
        $type = is_null($type) ? 'website' : $type;

        $setting = Setting::of($type, $key, $nestedKey, $this);

        return !empty($setting) ? $setting : Setting::of($type, $key, $nestedKey);
    }

Также settingOf использует модель Setting, которая содержит некоторые настройки различных моделей, определенных в проекте.

Все вещи, такие как Вывод метода settingOf, верны, как я и ожидал.

Но когда я хочу получить доступ к этому аксессору, min_withdraw всегда получаю эту ошибку:

Trying to get property of non-object (View: D:\wamp\www\loverspay\resources\views\main\pages\index.blade.php)

Даже когда я использовал {{dd($website->min_withdraw)}} в шаблоне блейда, он возвращает правильное значение, но когда я хочу отобразить это обычным способом, как {{$website->min_withdraw}}, я получаю эту ошибку.

Что такое проблема?

Обновление:

Кроме того, я использовал приведенные ниже коды для получения некоторых веб-сайтов, а затем отправил их на нужный шаблон блэйда в контроллере:

        $websites =
            Website
                withCount('members')
                ->get()
                ->makeVisible(['min_withdraw']);

        return view('main/pages/index', compact('websites'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...