Я смотрю с Laravel, и у меня возникают проблемы с попыткой сделать простую вставку, но кажется, что все мои заполняемые поля не включаются. Это ошибка:
SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value
(SQL: insert into 'addresses' ('updated_at', 'created_at')
values (2017-12-25 09:31:49, 2017-12-25 09:31:49))
Как вы можете видеть, только created_at
и updated_at
вот-вот будут вставлены, я подумал, что, может быть, я забыл свои fillable
вары, но это моя модель:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Addresses extends Model
{
protected $fillable = [
'name',
'city',
'suburb',
'street',
'o_number',
'i_number',
'postal_code',
'phone_s',
'email_s',
'google_map',
'customer_id'
];
}
И контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Addresses;
use App\Customers;
class AddressesController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function store(Request $request){
$create = Addresses::create([
'name' => request('name'),
'city' => request('city'),
'suburb' => request('suburb'),
'street' => request('street'),
'o_number' => request('o_number'),
'i_number' => request('i_number'),
'postal_code' => request('postal_code'),
'phone_s' => request('phone_s'),
'email_s' => request('email_s'),
'google_map' => request('google_map'),
'customer_id' => Customers::where('code',$request->session()->get('customer_code'))->first()->id
]);
$success = $create ? $request->session()->flash('success', '¡Registro exitoso!') : $request->session()->flash('success', 'Ooops! Algo salio mal :(');
return redirect('addresses/'.$request->session()->get('customer_code'));
}
}
Эхо значения request()
срабатывает! Так что я пропал без вести прямо сейчас, у меня есть другие модели и контроллеры, работающие хорошо одинаково. Пожалуйста помоги!
Эта ошибка показывает, что поле NAME требуется в вашей базе данных. Попробуйте изменить свой сценарий миграции и поместить значение по умолчанию в это поле или сделать его нулевым.
например.
$table->string('name')->nullable();
ИЛИ ЖЕ
$table->string('name')->default('');
Затем запустите обновление миграции.
Goto "phpmyadmin" >> "Переменные", затем найдите "sql_mode", отредактируйте и удалите "STRICT_ALL_TABLES или STRICT_TRANS_TABLES",
Он работает для меня. Надеюсь, это поможет всем.
Убедитесь, что request() имеет ключевое слово "имя". Заполните запрос ("имя") на случайную строку и повторите попытку.
Я решил это, используя save()
$addresses = new Addresses;
$customer_id = Customers::where('code',$request->session()->get('customer_code'))->first()->id;
$addresses->name = $request->name;
$addresses->city = $request->city;
$addresses->suburb = $request->suburb;
$addresses->street = $request->street;
$addresses->o_number = $request->onumber;
$addresses->i_number = $request->inumber;
$addresses->postal_code = $request->postal_code;
$addresses->phone_s = $request->phone_s;
$addresses->email_s = $request->email_s;
$addresses->google_map = $request->map;
$addresses->customer_id = $customer_id;
$success = $addresses->save() ? $request->session()->flash('success', '¡Registro exitoso!') : $request->session()->flash('success', 'Ooops! Algo salio mal :(');
return redirect('addresses/'.$request->session()->get('customer_code'));
Он работает правильно
Вы можете проверить опцию Null в структуре таблицы, например:
name
дляcustomer_id
, и оба поля, какphone_s
, необходимы для моих целей, и при этом ничего не вставляют