2016-03-28 4 views
2

列の値を変更する表の前に挿入トリガー(MySQL)があります。トリガーによって変更された列から値を取得する方法

しかし、object->number(数字はトリガーに設定された列です)を実行すると、トリガーが実行されるはずの->save()を実行した後、データベース番号を調べると何も表示されません。

私は、挿入中にautoincrement idも設定されていて、それを得ることができるのはなぜですか?ヘルプ

$object = new Table(); 
$object->col1 = 'hello'; 
$object->save(); 
echo $object->number; 

数の

おかげで挿入トリガーここ

前であなたがsave現在値と呼ばトリガーのコード

CREATE DEFINER=`homestead`@`%` TRIGGER `database`.`Table_BEFORE_INSERT` BEFORE INSERT ON `table` FOR EACH ROW 
BEGIN 
SET New.number = (SELECT COUNT(*) from `table` where relation_id = New.relation_id); 
END 
+0

あなたのコードをtiggerから見てみましょう –

+2

'$ model'が保存され、そのリクエストのオブジェクトの状態を覚えています。その後、MySQLからリロードされません。 '$ model-> save();を実行する必要があります。 $ model =モデル:: find($ id); echo $ model-> number; 'numberの新しい値を取得するために使用します。 –

答えて

2

が変更されたコラムですonモデルはデータベースに永続化され、Laravel ORMは手動で再度フェッチされない限り、データベースシステムによって行われた変更を反映しませんまあ。

更新された値を取得するには、freshメソッドを使用できます。

$object->fresh()->number; 
関連する問題