Предположим, что есть модель 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'));