Как добавить выбранный элемент в базу данных MySQL Laravel Schema Builder?

Я использовал webpatser / laravel-страны

в моем контроллере

$countries= DB::table('countries')->lists('name');

выбрать список стран в моей форме я получил всю страну

{!! Form::select('country',$countries,null) !!}

в моей схеме сейчас у меня так

$table->string('country');

я могу выбрать страну, но когда я отправляю столбец страны пустым. любая идея?

1 ответ

Решение

Изменить 2:

Ваша вставка должна выглядеть так:

DB::table('users')->insert(
    ['country' => 'Canada']
);

https://laravel.com/docs/5.2/queries


Редактировать: если вы хотите отправить строку с названием страны, вам нужна строка, которая будет ключом в вашем массиве. Как это:

$countries= DB::table('countries')->lists('name', 'name');

Это не типичное использование отношений с базой данных. Я ожидаю, что в пользовательской таблице будет целое поле country_id, соответствующее полю id в странах. Это то, что охватывает мой оригинальный ответ (ниже).


Оригинал:

Вам понадобится идентификатор в вашем массиве $ стран. Бьюсь об заклад, сейчас ваши идентификаторы отключены на один, начиная с 0 вместо 1, как в вашей БД.

$countries= DB::table('countries')->lists('name', 'id');

Есть разные способы сохранить отношения в laravel, но я действительно предпочитаю пропустить это, когда это возможно, и сохранить непосредственно в поле country_id.

{!! Form::select('country_id',$countries,null) !!}

Но это зависит от того, как настроены ваши отношения. И как вы экономите. Показать весь код!

Другие вопросы по тегам