После первых шагов в laravel, и просто нажмите на стену.laravel eloquent один-к-одному сохранить отношение
У меня есть два объекта:
Schema::create('company', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments('id');
$table->string('name')->unique();
$table->integer('addressid')->unsigned()->nullable();
});
и
Schema::create('addresses', function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments('id');
$table->string('street');
(...)
});
Schema::table('company', function($table) {
$table->foreign('addressid')
->references('id')->on('addresses')
->onDelete('cascade');
});
Модели
class Address extends Model {
public function shipyard() {
return $this->belongsTo('App\Company', 'addressid');
}
}
class Company extends Model {
public function address() {
return $this->hasOne('App\Address', 'id', 'addressid');
}
}
Когда я хочу, чтобы создать эти объекты в БД, которые я использую одну форму в HTML, чтобы собрать все данные. Тогда я отправляю запрос и сделать:
Route::post('/company', function (Request $request) {
(...validation...)
$company = new Company();
$company->name = $request->name;
$address = new Address();
$address->street = $request->street;
(...)
$company->address()->save($address);
$company->save();
return redirect('/');
});
В результате у меня есть два объекта в БД, но поле «AddressID» равна нулю. Зачем?
Большое спасибо. Оно работает. – bonzo