2017-11-12 10 views
0

これを使用しようとしていますが、UUIDを保存していないときはdbに入力されています。ここでlaravel-uuid UUIDが記入されていません。

私の設定です:

DB: 名:UUID CHAR(36)utf8mb4_unicode_ci

use Illuminate\Database\Eloquent\Model; 
use Cviebrock\EloquentSluggable\Sluggable; 
use Emadadly\LaravelUuid\Uuids; 

class Account extends Model 
{ 
    use Uuids; 

    protected $fillable = [ 
     'name', 'tname', 'short', 'uuid' 
    ]; 

    protected $guarded = [ 
     'id' 
    ]; 

コントローラー:

public function saveUUID(Account $account){ 
$example = new Account; 

    $example->name = 'test'; 
    $example->short = 'FIVE'; 
    $example->industry_id = 1; 
    $example->user_id = 1; 
    $example->status_id = 36; 
    $example->save(); 

return response()->json(['example' => $example]); 
} 

UUIDフィールドが左nullであります$ exampleの応答にはuuidは含まれていません。

何が間違っているのですか?

+0

残りを処理します私はあなたがトレイト – usrNotFound

+0

をUUIDに見ることができますAccount' 'であなたの' $ fillable'配列は 'uuid'フィールドを持っていますか? –

+0

これをチェックアウトしてみてください。https://stackoverflow.com/questions/43240247/laravel-eloquent-uuid-in-a-pivot-table – SaidbakR

答えて

2

私は個人的には次のようなUUID形質を作成します。

<?php 

use Ramsey\Uuid\Uuid; 

trait HasUuid 
{ 

protected static function bootHasUuid() 
{ 
    /** 
    * Attach to the 'creating' Model Event to provide a UUID 
    * for the `uuid` field 
    */ 
    static::creating(function ($model) { 
     $columnName = static::getUuidColumn(); 

     $model->$columnName = Uuid::uuid4(); 
    }); 
} 

/* Getters and Setters */ 


public function getUuidAttribute() 
{ 
    $columnName = static::getUuidColumn(); 

    return $this->attributes[$columnName]; 
} 

protected static function getUuidColumn() 
{ 
    if (isset(static::$uuidColumn)) { 
     return static::$uuidColumn; 
    } 
    return 'uuid'; 
} 

今、あなたはモデルでは、あなたのUUIDフィールドは、あなたがそうstatic $uuidColumn = 'user_uuid':のように提出された宣言することができますクラスモデルで何かを呼ばれFYI場合

<?php 

class Model { 
use HasUuid 
//..... 
} 

HasUuidトレイト

を含めることができます。

形質は

+0

それは非常にうまくいった、ありがとう! save()メソッドでも動作します。 –

+1

@SeánMcCabe素晴らしい。 'bootHasUuid'メソッドをチェックすると、' static :: creating'のようなものが見えます。これは、モデルがトリガする何かを保存しようとするたびに、 'uuid'が作成されることを意味します。 – usrNotFound

-1

はモーダルに入れる:

protected $fillable = array('*'); 

protected $guarded = ['id']; 
+0

'*'は良い "解決策"ではありません。 –

+0

効果はありません。彼らが立っていて守られているように、それらのフィールドを表示するように更新された質問 –

関連する問題