Laravel по-русски

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

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

#1 26.01.2016 12:11:52

Ошибка добавления в базу данных

Добрый день! Начал осваивать Laravel, не получаться передать запись "много ко многим".
Если кто-то добрый человек поможет, буду крайне благодарен! Заранее спасибо!

Выдает такую вот ошибку "SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`renot`.`client_moreinfoclient`, CONSTRAINT `client_moreinfoclient_moreinfoclient_id_foreign` FOREIGN KEY (`moreinfoclient_id`) REFERENCES `moreinfoclients` (`id`) ON DELETE CASCADE) (SQL: insert into `client_moreinfoclient` (`client_id`, `moreinfoclient_id`) values (11, 543))"

У меня следующие данные

Schema::create('clients', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->timestamps();
});

Schema::create('moreinfoclients', function (Blueprint $table) {
            $table->increments('id');
            $table->string('nameinput');
            $table->string('valueinput');
            $table->timestamps();
});

Schema::create('client_moreinfoclient', function(Blueprint $table) {
            $table->integer('client_id')->unsigned()->index();
            $table->foreign('client_id')->references('id')->on('clients')->onDelete('cascade');

            $table->integer('moreinfoclient_id')->unsigned()->index();
            $table->foreign('moreinfoclient_id')->references('id')->on('moreinfoclients')->onDelete('cascade');

            $table->timestamps();
});


class Client extends Model
{
    protected $fillable = [
        'name'
    ];

    public function clientmoreinfo()
    {
        return $this->belongsToMany('App\Moreinfoclient');
    }
}

class Moreinfoclient extends Model
{
    protected $fillable = [
        'nameinput',
        'valueinput'
    ];

    public function clients()
    {
        return $this->belongsToMany('App\Client');
    }
}

ну и сам контроллер

public function create()
    {
        $moreinfoclient = Moreinfoclient::lists('nameinput', 'valueinput', 'id');
        return view('clients.create', compact('moreinfoclient'));
    }

    public function store(Request $request)
    {
        $this->createMore($request);
        return redirect('clients');
    }

private function createMore(Request $request)
    {
        $client = Client::create($request->all());

        $client->clientmoreinfo()->attach($request->input('nameinput'));

        return $client;
    }

Не в сети

#2 27.01.2016 03:49:59

duster
Откуда: Мельбурн
Сообщений: 148

Re: Ошибка добавления в базу данных

У Вас же в ошибке уже все сказано - проблема с foreign ключом (ссылка из одной таблицы на другую)
Значение moreinfoclient_id не стоит или указывает на несуществующий row

Не в сети

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