2

1 つのクエリで更新したい 2 つのテーブルがありますが、その方法がわかりません。

    $update = DB::table('users')
        ->join('addresses', 'users.id', '=', 'addresses.user_id')
        ->where('id', '=', Auth::user()->id)
        ->update(array(
            'firstname' =>  $userDetails['firstname'],
            'lastname'  =>  $userDetails['lastname'],
            'email'     =>  $userDetails['email'],
            'password'  =>  $userDetails['password'],
            'addresses.add_line1'       =>  $userDetails['addl1'],
            'addresses.add_line2'       =>  $userDetails['addl2'],
            'addresses.town'            =>  $userDetails['town'],
            'addresses.county'      =>  $userDetails['county'],
            'addresses.post_code'       =>  $userDetails['postcode']

        ));

    dd($update);

しかし、私はこれを返します

    SQLSTATE[42S22]: Column not found: 1054 Unknown column 'add_name_no' in 'field list'

誰にも何か提案がありますか?

前もって感謝します。

4

1 に答える 1

0

残念ながら、DB::raw(); を使用してカスタム クエリを作成する以外に、これを回避する簡単な方法はありません。

JOIN メソッドを追加したにもかかわらず、laravel は更新時に join をクエリに含めません。この理由について 100% 確信があるわけではありませんが、異なるデータベース エンジン間の違いと関係があります。

アップデート

laravel 4にはこの機能があるように見えますがhttps://github.com/laravel/framework/commit/57e11e392447206f60d77b33c0646229842315a3

それを私のlaravelアプリケーションに追加したところ、うまくいきました!

于 2013-05-14T12:27:20.437 に答える