Немного предыстории. Я пытаюсь зарегистрировать нового пользователя, создать для него профиль по умолчанию и затем войти в него. Таблица пользователей как current_profile_id
колонка.
Я использую UUID для этого, там нет увеличения идентификаторов, как все. Кажется, все мои миграции настроены правильно, но что-то идет не так, когда отношения сохраняются. В конце процесса мой недавно созданный профиль не имеет идентификатора.
UuidTrait.php:
<?php
namespace MyNamespace\Traits;
use Ramsey\Uuid\Uuid;
use Illuminate\Database\Eloquent\ModelNotFoundException;
/**
* Trait UuidTrait
* @package MyNamspace\Traits
*/
trait UuidTrait
{
/**
* Boot function from laravel.
*/
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->{$model->getKeyName()} = Uuid::uuid4()->toString();
});
}
}
User.php (показаны только отношения)
/**
* Has many profiles
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function profiles()
{
return $this->hasMany('MyNamespace\Models\Profile');
}
/**
* Current profile
*
* @return \Illuminate\Database\Eloquent\Relations\belongsTo
*/
public function currentProfile()
{
return $this->hasOne('MyNamespace\Models\Profile', 'id', 'current_profile_id');
}
AuthController.php (register () создание всего этого)
$user = $this->user->create($request->all());
$profile = $user->profiles()->create(['username' => $request->username]);
$user->currentProfile()->save($profile);
Мой пользователь создается с идентификатором, но по какой-то причине мой профиль создается без. У меня два подозрения. Или это моя черта, которую я создаю из отношений, или это отношения, какие-нибудь идеи?
Задача ещё не решена.
Других решений пока нет …