一点背景。我正在尝试注册新用户,为他们创建默认配置文件,然后将其登录。用户表作为current_profile_id
列。
我正在使用UUID,因为没有递增的ID。我的迁移似乎都已正确设置,但在保存关系时出现问题。在该过程结束时,我新创建的配置文件没有ID。
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(注册()创建全部)
$user = $this->user->create($request->all());
$profile = $user->profiles()->create(['username' => $request->username]);
$user->currentProfile()->save($profile);
我的用户是使用ID创建的,但出于某种原因,我的个人资料正在创建中。我有两个怀疑。无论是我的特质,还是我从关系或其关系,任何想法创造的?