Теперь я знаю, что могу создать пользователя, используя отношение haveMany между регионом и пользователем, выполнив следующие действия:
$region = Region::find($data['region_id']);
$region->users()->create([
'username' => $data['username'],
'email' => $data['email'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'password' => bcrypt($data['password']),
]);
Но что, если есть несколько внешних ключей, как создать пользователя, не сделав его заполняемым для более чем одного ограничения внешнего ключа? А если их 3 или 4?
Пример настройки отношений в разных моделях:
Region hasMany Users, or
User belongsTo a Region
Location hasMany Users, or
User belongsTo a Location
Урезанная версия моей миграции выглядит так, если это помогает лучше понять отношения:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->integer('region_id')->unsigned();
$table->integer('location_id')->unsigned();
$table->timestamps();
$table->foreign('region_id')
->references('id')
->on('regions');
$table->foreign('location_id')
->references('id')
->on('locations');
});
Schema::create('regions', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 100);
$table->timestamps();
});
Schema::create('locations', function (Blueprint $table) {
$table->increments('id');
$table->string('street_address', 100);
$table->string('city', 50);
$table->string('province', 50);
$table->string('country', 50);
$table->string('postal_code', 10);
$table->timestamps();
});
Пример моделей региона и местоположения:
/**
* Region may have many users.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function users()
{
return $this->hasMany('App\User');
}
/**
* Location may have many users.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function users()
{
return $this->hasMany('App\Location');
}
$this->hasMany()
в пользовательскую модель столько, сколько вам нужно для их определения? - person Blkc   schedule 15.07.2015