Отображение значения из БД в клинке в laravel - PullRequest
1 голос
/ 06 октября 2019

В теге <option> я пытаюсь добавить выбранную страну из БД.

<option>
{{ Auth::user()->cpreference()->where('qatype',1)->select('country')->first()}}
</option>

Вывод, отображаемый в раскрывающемся списке, выглядит следующим образом:

{"country":"Algeria"}

Как показать только название страны?

Ответы [ 2 ]

2 голосов
/ 06 октября 2019

Делая это:

Auth::user()->cpreference()->where('qatype',1)->select('country')->first()

вы получаете весь объект, и учитывая тот факт, что вы пытаетесь вывести его, он приводится к json.

Для доступа кзначение конкретного свойства просто добавьте ->country в конце:

Auth::user()->cpreference()->where('qatype',1)->select('country')->first()->country

В качестве примечания, я предлагаю вам избегать запросов в вашем веб-интерфейсе, вы можете получить значения в вашем контроллереа затем отправить их на просмотр. Кроме того, чтобы избежать таких длинных запросов, вы можете определить Accessors и Local Scopes в ваших моделях. Проверьте документацию для получения дополнительной информации.

2 голосов
/ 06 октября 2019

Доступ к свойству возвращенного объекта модели

<option>
{{ \Auth::user()->cpreference()->where('qatype', 1)->select('country')->first()->country }}
</option>

И наличие запросов в вашем блэйд-представлении не учитывает разделение интересов в архитектуре MVC

Вы должны добавить аксессор к вашему User модель, подобная этой

public function getCountryAttribute()
{
   return $this->cpreference()->where('qatype', 1)->select('country')->first()->country;
}

И сделайте более элегантный вызов на ваш взгляд

<option>{{ auth()->user()->country }}</option>

Надеюсь, это поможет

...