मैं अपने Vue घटक से एक अजाक्स अनुरोध के माध्यम से Laravel में एक मॉडल की तारीख थोक अद्यतन करने के लिए कोशिश कर रहा हूँ। मेरे पास मेरे कोड के रूप में निम्नलिखित है लेकिन मुझे यकीन नहीं है कि त्रुटि कहां है, मैंने पोस्टमैन का उपयोग करके इसका परीक्षण भी किया है जिसके लिए मैं परिणाम प्रदान करूंगा।

Vue घटक स्क्रिप्ट टैग

export default {
  props: ['data'],
  data() {
    return {
      last: null
    }
  },
  methods:{
    ...
    update(){
      console.log(this.data);
      console.log(this.last);
      axios.put('/api/maintain/bulk',
      {
        params: {
          'ids': this.data,
          'date': this.last.toString()
        }
      }).then((response) => {
        console.log(response);
      }, (xhr) => {
        console.log(xhr);
      });
     }
  },
  ...
}

data एक मूल घटक से पारित किया जाता है, जब लॉग किया जाता है तो [328, 346, __ob__: Observer]

last दिनांक प्रकार के इनपुट द्वारा सेट किया गया है मार्ग/एपीआई.php

...
Route::put('/maintain/bulk', 'MaintenanceController@bulkupdate');
...

रखरखाव नियंत्रक.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Maintain;

class MaintenanceController extends Controller
{
  ...
  public function bulkupdate(Request $request){
    Maintain::whereIn('id', $request->input('ids'))->update(['start' => $request->input('date')]);
  }
}

डाकिया एपीआई कॉल

PUT | http://127.0.0.1:8000/api/maintain/bulk`
body:
{
    "ids": [328, 346],
    "date": 2020-10-29
}

प्रतिक्रिया - लारवेल लॉग फ़ाइल में त्रुटि भी प्रदर्शित होती है

TypeError: Argument 1 passed to Illuminate\Database\Query\Builder::cleanBindings() must be of the type array, null given, called in C:\Users\adam\LaravelProjects\EMG-AIM-Dev\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php on line 918 in file C:\Users\adam\LaravelProjects\EMG-AIM-Dev\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php on line 2954

-संपादित करें-

मैंने महसूस किया है कि अनुरोध में क्या गलत है, लेकिन मैं अभी भी इसे ठीक करने के बारे में अनिश्चित हूं, मैंने वर्तमान मुद्दे को दिखाने के लिए पोस्टमैन कॉल में संशोधन किया है, मुझे लगा है कि यह इस तथ्य के कारण है कि एक से एक तारीख गुजर रही है ऐसा लगता है कि डोम इनपुट इसे एक स्ट्रिंग के रूप में पंजीकृत नहीं कर रहा है।

PUT तब सफल होता है जब दिनांक को एक स्ट्रिंग ("2020-10-29") के रूप में अनुरोध में जोड़ा जाता है, लेकिन इस समय तारीख को एक स्ट्रिंग के रूप में पारित नहीं किया जा रहा है, इस तथ्य के बावजूद कि जब मैं अजाक्स अनुरोध के माध्यम से पैरामीटर भेजता हूं तो मैं उपयोग करता हूं toString() विधि।

1
Adam_R 29 अक्टूबर 2020, 16:40

1 उत्तर

सबसे बढ़िया उत्तर

पता चला कि कोड को निम्नलिखित में बदलने से समस्या हल हो गई है

व्यू घटक

axios.put('/api/maintain/bulk', {
          'ids': this.data,
          'date': this.last
        })...

रखरखाव नियंत्रक

public function bulkupdate(Request $request){
    Maintain::whereIn('id', $request->ids)->update(['start' => $request->date]);
}
0
Adam_R 13 नवम्बर 2020, 14:23