Модель соединения не работает должным образом - Laravel - PullRequest
1 голос
/ 20 октября 2019

Я пытаюсь отобразить тег, выбранный пользователем. Имя тега находится в таблице тегов. Таблица tagpost имеет соответствие между тегом и пользователем.

Ниже приведена модель User, где первичным ключом в таблице users является id, а var_id может быть разных типов, а 2 - для пользователей (не уверенесли ниже, где условие является правильным):

public function tagpost()
    {

      return $this->hasMany('App\tagpost', 'var_id')->where('type',2);
    }

Ниже приведена модель тега:

     public function tags()
    {
        return $this->belongsToMany('App\tag','id');
    }

        public function users()
    {

      return $this->belongsToMany('App\User');
    }

Ниже приводится модель тега:

 public function tagposts()
    {
        return $this->hasMany('App\tagpost', 'var_id');
    }

Следующий запрос не работает в блейде:

<option>{{ Auth::user()->tagpost()->tags()->select('t_name')->first()->t_name}} </option>

Ошибка в блейде:

Call to undefined method Illuminate\Database\Query\Builder::tags()

Ответы [ 2 ]

1 голос
/ 20 октября 2019

Вы называете отношения как метод, тогда как они должны быть вызваны как свойство как это. Также я предлагаю вам документацию laravel

<option>{{ Auth::user()->tagpost->tags->select('t_name')->first()->t_name}} </option>
0 голосов
/ 20 октября 2019

Если tagpost только таблица отношения почему вы не определить метод метки () на модели пользователя, используя таблицу tagposts как стержень, так что вы можете просто сделать Auth :: пользователя () -> теги ()?

Ваш код не будет работать, потому что -> tagpost () возвращает само отношение, а не модели тегов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...