#php #laravel #eloquent
#php #ларавель #красноречивый
Вопрос:
Я хочу отобразить все вакансии, которые пользователь подал
Вот мои таблицы ..
applies -gt; | users_id | posts_id | posts -gt; | id | (other posts cols ... ) user_info -gt; | id | (name col etc...)
Я пробовал belongsToMany()
, но выдает ошибку
mb_strpos(): Аргумент #1 ($стог сена) должен иметь тип string, заданный массивом
Связь после модели
public function applies() { return $this-gt;belongsToMany(Applies::class ,'applies', 'users_id' , 'posts_id'); }
Применяет модель
protected $table = 'applies'; protected $primaryKey = ['user_id', 'id']; public $incrementing = false; protected $fillable = [ 'user_id', 'posts_id' ];
Наконец, Контроллер
public function index() { $infos = Info::where('user_id', Auth::id())-gt;first(); $apply = Post::find(2)-gt;applies ; var_dump($apply); }
Ответ №1:
Вы должны передать имя сводной таблицы в качестве второго параметра belongsToMany
return $this-gt;belongsToMany(User::class ,'applies', 'users_id' , 'posts_id');
Если вы видите метод реализации .второй параметр в качестве имени таблицы
public function belongsToMany($related, $table = null, $foreignPivotKey = null, $relatedPivotKey = null, $parentKey = null, $relatedKey = null, $relation = null)
Комментарии:
1. О, спасибо .. Я добавил таблицу сейчас, но на этот раз выдает
mb_strpos(): Argument #1 ($haystack) must be of type string, array given
ошибку2. Пользователь::класс не применяется::класс для первого параметра