Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel UPDATEORCEATE方法_Php_Jquery_Forms_Laravel_Eloquent - Fatal编程技术网

Php laravel UPDATEORCEATE方法

Php laravel UPDATEORCEATE方法,php,jquery,forms,laravel,eloquent,Php,Jquery,Forms,Laravel,Eloquent,我的方法中有以下代码,我将通过ajax发送到控制器方法: $newUser = \App\UserInfo::updateOrCreate([ 'user_id' => Auth::user()->id, 'about' => $request->get('about'), 'sec_email' => $request->get('sec_email'), 'gender'

我的方法中有以下代码,我将通过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" => "example@gmail.com"
  "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();
});

现在的问题是,我的表中有一条记录,但上面的代码创建了另一条记录,第二条是它在每次单击按钮(请求)时创建了两条相乘记录。

在您的用例中,您应该指定第二个参数。第一个表示匹配的条件,第二个用于指定要更新的字段

$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')
]);
以下是文档中的一个示例:


Eloquent有一个名为
updateOrCreate
的方法,可以像下面的示例一样使用:


如果我错了,请阻止我,但是看看这个方法是如何工作的,我不认为第二个参数需要
'user\u id'=>Auth::user()->id,
。Builder::updatedOrCreate()将第一个参数发送到firstOrNew(),这意味着您的用户Id将应用于新条目(如果要创建新条目的话)。Nice catch@Claymore!我已经更新了我的代码片段。无论哪种方式都可以,但这样肯定更好。如何在数据库中选择它应该检查的表?在laravel 8中不起作用
// 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]
);
/**
 * Create or update a record matching the attributes, and fill it with values.
 *
 * @param  array  $attributes
 * @param  array  $values
 * @return \Illuminate\Database\Eloquent\Model
 */
public function updateOrCreate(array $attributes, array $values = [])