Eloquent hasOne, похоже, обновляет неверную таблицу - PullRequest
0 голосов
/ 24 сентября 2019

Я получаю нарушение ограничения целостности при обновлении таблицы моих пользователей при добавлении текущего пользователя в продукт.Я также использую uuids вместо автоматического увеличения, так что это добавляет еще один уровень сложности.Я думаю, что я могу объявлять отношения неправильно.

Похоже, ошибка пытается обновить таблицу пользователей. Tryi SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: users.uuid (SQL: update "users" set "uuid" = ?, "updated_at" = 2019-09-24 13:18:05 where "uuid" = 8ee98fac-11f7-5114-b9f1-772fe9732a49)

таблица пользователей

  • uuid

User.php

    public function products(){
        return $this->hasMany('App\Product', 'user_uuid', 'uuid');
    }

таблица продуктов

  • uuid
  • user_uuid

Product.php

class Product extends Model
{
    use SoftDeletes;
    use uuidTrait;

    protected $primaryKey = 'uuid';
    public $incrementing = FALSE;

    public function user(){
        return $this->hasOne('App\User', 'uuid', 'user_uuid');
    }
    public static function boot(){
        parent::boot();
        static::creating(function(Product $instance){
            $instance->user()->save(auth()->user());
        });
    }
}

1 Ответ

0 голосов
/ 24 сентября 2019

Вам нужен UUID текущего пользователя

    static::creating(function(Product $instance){
        if(empty($instance->uuid)){
            $instance->uuid = auth()->user()->user_uuid;
        }
    });

или вы используете функцию associate

$product = new Product;
//...
$product->save();
$user = User::find(Auth::user()->id);
$user->associate($product);
$user->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...