Laravel Красноречивый / Многие ко многим Отношения выдает ошибку ( преобразование массива в строку )

#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. Пользователь::класс не применяется::класс для первого параметра