Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.02.2018 15:27:49

Многие ко многим через... 2

Есть связь многие ко многим (Card и User) и промежуточная pivot таблица CardUser (class CardUser extends Pivot {//}).
Теперь, можно вызвать из промежуточной модели определенные данные с внешним ключом, например модель ссылки.

 
class CardUser extends Pivot
{
    //дополнительная связь промежуточной таблицы
    public function links()
    {
        return $this->hasMany('App\Link', 'card_user_id');
    }
}
class Card extends Model
{
    public function users() {
        return $this->belongsToMany('App\User', 'card_user')->using('App\CardUser');
    }
   
}
class User extends Authenticatable
{
      public function cards() {
        return $this->belongsToMany('App\Card', 'card_user')->using('App\CardUser');
    }
}

Но при использовании возникают проблемы, так как не указаны поля в withPivot, которых собственно и нет, а есть только внешний ключ из другой модели/таблицы. Соответственно pivot не связывается с link и не работает как надо, а только через first() Controller:

 
        $links = CardUser::find(1)->links;
        dump($links);

        $user = User::find(1);
        foreach ($user->cards as $card) {
            $links = $card->pivot->first()->links;
            dump($links); 
        }

Изменено max1s (28.02.2018 15:04:00)

Не в сети

#2 27.02.2018 15:25:10

Re: Многие ко многим через... 2

вручную пропиши че откуда по чем берем

    public function roles()
    {
        return $this->belongsToMany('App\Http\Model\Roles', 'roles_users', 'user_id', 'role_id');
    }

Не в сети

#3 28.02.2018 14:41:31

Re: Многие ко многим через... 2

Это в моделях которые связываются с пивотной? Попробовал разные варианты - не работает. Без
->using('App\CardUser') вообще ничего не показывает а с ней пустые массивы. (пока делаю в виде json для связи пивотной таблицы с дополнительной структурой, прямо в поле таблицы через withPivot).

Изменено max1s (28.02.2018 14:46:29)

Не в сети

Подвал раздела