web-dev-qa-db-ja.com

laravel updateOrCreateメソッド

私のメソッドには次のコードがあり、ajax経由でコントローラメソッドに送信しています:

    $newUser = \App\UserInfo::updateOrCreate([
        'user_id'   => Auth::user()->id,
        'about'     => $request->get('about'),
        'sec_email' => $request->get('sec_email'),
        'gender'    => $request->get("gender"),
        'country'   => $request->get('country'),
        'dob'       => $request->get('dob'),
        'address'   => $request->get('address'),
        'mobile'    => $request->get('cell_no')
    ]);

dd($request->all())は以下を提供します:

array:8 [
  "_token" => "fHeEPfTvgMD3FpIBmmc6DmKXFaiuWKZEiOhg6twQ"
  "about" => "Some about me."
  "sec_email" => "[email protected]"
  "country" => "Priority highest"
  "gender" => "male"
  "dob" => "12/12/1990"
  "address" => "Some address"
  "cell_no" => "234234234"
]

完璧です。

JQueryコード:

$('#submit-editProfile-form').on('click', function() {
    var profileEditForm = $("#edit-user-profile");
    var formData = $('#edit-user-profile').serialize();
    profileEditForm.on('submit', function(e){
        e.preventDefault();
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        $.ajax({
            url:'/freelance/edit-userProfile-info',
            type:'POST',
            data:formData,
            error: function (data) {
               console.log('Error');
            }
        });
    }).submit();
});

問題はテーブルにレコードがあることですが、上記のコードは別のレコードを作成し、2番目はボタンのクリック(リクエスト)ごとに2つのレコードを乗算することです

20
Gammer

ユースケースでは、2番目のパラメーターを指定する必要があります。最初は一致の条件を示し、2番目は更新するフィールドを指定するために使用されます。

$newUser = \App\UserInfo::updateOrCreate([
    //Add unique field combo to match here
    //For example, perhaps you only want one entry per user:
    'user_id'   => Auth::user()->id,
],[
    'about'     => $request->get('about'),
    'sec_email' => $request->get('sec_email'),
    'gender'    => $request->get("gender"),
    'country'   => $request->get('country'),
    'dob'       => $request->get('dob'),
    'address'   => $request->get('address'),
    'mobile'    => $request->get('cell_no')
]);

ドキュメントの例を次に示します。 https://laravel.com/docs/5.4/eloquent

// If there's a flight from Oakland to San Diego, set the price to $99.
// If no matching model exists, create one.
$flight = App\Flight::updateOrCreate(
    ['departure' => 'Oakland', 'destination' => 'San Diego'],
    ['price' => 99]
);
41
Rhu

私のコードは

CityProductTemp::updateOrCreate(
    [
        'city_id' => $city_id,
        'product_id' => $product->product_id
    ],
    [
        'mrp' => $mrp,
        'sale_price' => $sale_price,
        'in_offer' => $in_offer,
        'is_featured' => $is_featured,
        'sort_number' => $sort_number
    ]
);

id句の不明な列where

SQL: UPDATE city_product_temp SET mrp = 66, is_featured = 1, 
     updated_at = 2017-09-15 15:23:17, in_offer = 0 WHERE `id` IS null
4
Gourav Arora