Laravel по-русски

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

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

#1 31.10.2015 12:44:50

Снова один ко многим (hasMany)

Доброго времени суток форумчане. Начинаю изучать laravel, сходу не осилил множественные отношения, прошу помощи ).
Ситуация, есть стандартная таблица users и есть таблица user_countries (id,name). Задача, каждому пользователю может быть назначено много стран. В итоге должна получится третья таблица в которой, хранятся user_id и id страны, разрешенной пользователю.
Сделал вот такой view для редактирования пользователя и назначенных ему стран:

@extends('admin_template')

@section('content')

    <h1>Update user</h1>
    {!! Form::model($user,['method' => 'PATCH','route'=>['users.update',$user->id]]) !!}
    <input name="_token" type="hidden" value="{!! csrf_token() !!}" />
    <div class="form-group">
        {!! Form::label('Name', 'Name:') !!}
        {!! Form::text('name',null,['class'=>'form-control']) !!}
    </div>
    <div class="form-group">
        {!! Form::label('Email', 'Email:') !!}
        {!! Form::text('email',null,['class'=>'form-control']) !!}
    </div>
    <div class="form-group">
        {!! Form::label('Comments', 'Comments:') !!}
        {!! Form::textarea('comments',null,['class'=>'form-control']) !!}
    </div>
    <div class="form-group">
        {!! Form::label('country_id', 'Country for user:') !!}
        {!! Form::select('country_id[]',($country), null,['class' => 'selectpicker form-control','multiple' => 'multiple','tabindex'=>'-1']) !!}
    </div>
    
    <div class="form-group">
        {!! Form::submit('Update', ['class' => 'btn btn-primary']) !!}
    </div>
    {!! Form::close() !!}

@endsection

вот такой код в UserController

    public function update($id) {
        $userUpdate = Request::all();
        $country=Request::get('country_id');
        $country['user_id']=$id;
        $user = User::find($id);
        $user->update($userUpdate);
        $user->country()->insert($country);
        return redirect('users');
    }

модель User

    public function country() {
        return $this->hasMany('App\Userincountries');
    }

В итоге получаю вот такой запрос:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: insert into `userincountries` (`0`, `1`, `2`, `user_id`) values (10, 372, 18, 2))

А это какая-то полная фигня ). Подскажите, как исправить ситуацию

Не в сети

#2 01.11.2015 00:48:03

Re: Снова один ко многим (hasMany)

Поспешил задавать вопрос, разобрался сам ). Во первых это не hasMany а belongsToMany, ну а добавление/редактирование это
$user->country()->attach($country);
$user->country()->sync($country);

Не в сети

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