2017-07-27 10 views
0

I持って($ idは、実際に生成されたIDではありませんので動作しません):Laravel:別の列のデフォルト値をインクリメントIDを使用して

Schema::create('threads', function (Blueprint $table) { 
     $id = $table->increments('id'); 
     $table->string('base64_id', 6)->default(Math::to_base($id, 62)) 
    }); 

私の質問は、私は、現在生成されたIDを得ることができる方法であります$ idなので、IDを使って別のIDを生成することができます。

+1

あなたはそれを投稿する前にあなたの質問をお読みください。 –

+0

$ idは、その行がカスタムIDを計算するために使用するために自動的に生成されるIDにします。 – Hillcow

+0

正確には、MySQLは挿入するためのIDだけを計算しますが、挿入後に更新する必要がありますので、デフォルト値を使用できません。 – Hillcow

答えて

0

マイグレーションを使用してこれを行うことはできませんが、新しい行が作成されるたびにこのフィールドを埋めるモデルでa created eventを使用することができます。例えば

namespace App\Observers; 

use App\Thread; 

class ThreadObserver 
{ 
    public function created(Thread $thread) 
    { 
     $thread->base64_id = base64_encode($thread->id); 
     $thread->save(); 
    } 
} 
関連する問題