質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1583閲覧

DB::transaction内で作成したレコードのidを外で参照する

akihiro0117

総合スコア32

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/01/29 05:37

\DB::transactionの中でレコードを作成し、外で作成したレコードのidを参照しようとしていますが、以下のコードでecho $idの結果はnullのままです。

use で渡せば結果も受け取れると思っていたのですが、間違っていますでしょうか?
ちなみに、use ($data, &$id)でも駄目でした。

何かお気づきの点がありましたら、教えいただけると助かります。

PHP

1 $id = null; 2 3 \DB::transaction(function () use ($data, $id) { 4 $obj = Abc::create([ 5 'id' => 1, 6 'name' => 'test', 7 ]); 8 9 $obj2 = Abc2::create([ 10 'id' => 1, 11 'abc_id' => $obj->id, 12 ]); 13 14 $id = $obj->id; 15 }); 16 17 echo $id;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$idはオブジェクトでないので、参照渡しでuse ($data, &$id)とすればできるかと思いますが別の方法としては、retun文で返す方法もあります。

$id = \DB::transaction(function () use ($data, $id) { $obj = Abc::create([ 'id' => 1, 'name' => 'test', ]); $obj2 = Abc2::create([ 'id' => 1, 'abc_id' => $obj->id, ]); return $obj->id; });

投稿2018/01/29 05:56

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問