• 1399/04/27

وارد کردن اطلاعات یک فرم به صورت آرایه داخل دیتابیس :

سلام جناب خسروجردی عزیز

شما توی قسمت http request در انتهای ویدئو  توضیحی دادید در مورد ارسال اطلاعات input ها به صورت آرایه. من سعی کردم اطلاعات را به همون صورت داخل دیتابیس insert کنم ولی به من ارور می ده 
 

به عنوان مثال یک نمونه از فرمه ( به شکل ساده):

<form action="{{route('user.store')}}" method="POST" class="mt-5">
    @csrf
    
   <div class="form-group w-25 mx-auto">
        <label for="exampleInputEmail1">Email address</label>
        <input type="email" class="form-control border-dark" id="exampleInputEmail1" name="email[0]"
            placeholder="Enter email">
    </div>
   
    <div class="form-group w-25 mx-auto">
        <label for="exampleInputEmail1">Email address</label>
        <input type="email" class="form-control border-dark" id="exampleInputEmail1" name="email[1]"
            placeholder="Enter email">
    </div>
         <button type="submit" class="btn btn-primary mt-5 btn-block w-25 mx-auto">Submit</button>
       
</form>

کد قسمت بک اند:

 

public function store(Request $request)
    {

  User::create($request->all());
           

 return redirect()->route('user.index')->with('message', 'Record was saved successfully');
        
    }

 

این ارور زیر را گرفتم:

 

Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, object given, called in C:\Users\TORANJ\Desktop\Laravel\keivan\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 866

 

وقتی Request را داخل حلقه foreach قرار دادم باز هم ارور داد :

 

 

public function store(Request $request)
    {

  foreach ($request->all() as $req) {
                     
                    User::create($req);

 }
           
           

 return redirect()->route('user.index')->with('message', 'Record was saved successfully');
        
    }

 

ارورش به این صورت هست:

 

Argument 1 passed to Illuminate\Database\Eloquent\Builder::create() must be of the type array, string given, called in C:\Users\TORANJ\Desktop\Laravel\keivan\vendor\laravel\framework\src\Illuminate\Support\Traits\ForwardsCalls.php on line 23

 

سوال من اینه که input هایی که به صورت آرایه هستن اطلاعاتشون را به چه شکلی باید در دیتابیس insert کرد که ارورهای بالا را نگیریم؟

ممنون

  • 1399/04/27
  • ساعت 16:13

با سلام خدمت شما همراه عزیز

 

لینک زیر بهتون کمک میکنه

 

https://stackoverflow.com/questions/51329267/how-to-store-array-in-laravel

 

 

دقت داشته باشید که همه ی ارایه ها باید پیمایش بشن و ارایه توو در توو نداشته باشید

از مرحله به مرحلش برای خودتون dd بگیرید تا مشکل حل بشه


  • 1399/04/27
  • ساعت 18:12

ممنون از راهنماییتون 
لینکی را که قرار دادید من قبلا" روشی که گفته بود را انجام داده بودم بازم همون ارور های بالا را می داد من یک روش دیگه ای انجام دادم که تا حدودی جواب داد ولی آخرش باز هم یک ارور می ده ولی اطلاعات را دیتابیس ذخیره می کنه 
کد تابع store را من این صورت تغییر دادم:
 

 public function store(Request $request)
    {

        


  $allrequests= $request->all();

     for($i=0; $i<= count($allrequests); $i++) {
                       
                  
                     User::create([
                         
                        'name'=>$allrequests['name'][$i],
                        'family'=>$allrequests['family'][$i],
                        'password'=>$allrequests['password'][$i],
                        'email'=>$allrequests['email'][$i],

                     ]);

                  
                 }

                  

return redirect()->route('user.index')->with('message', 'Record was saved successfully');
        }
    }

 

با این روشی که استفاده کردم اطلاعات را در دو ردیف متفاوت ذخیره می کنه یعنی دو تا آیدی مختلف بهشون می ده آیا این شیوه ای که کد را نوشتم درسته؟  یعنی اگر چند فیلد داشته باشیم که name های مشابه داشته باشن با شماره های متفاوت مثلا" 

 

family[0]
family[1]

 

در دیتابیس باید در یک ردیف با آیدی یکسان ذخیره بشن؟ یا در دو ردیف با آیدی های متفاوت؟ ( با روشی که بالا نوشتم با دو آیدی متفاوت ذخیره شدن)

ببخشید سوالها زیاد شد
ممنون برای وقتی که می گذارید

 

 

 


  • 1399/04/27
  • ساعت 18:14

بستگی به نوع مثال داره

 

باید این مورد در مثال واقعی بررسی بشه 

 

مثلا یک مثال میشه موقه اضافه کردن محصول به سبد خرید

که ایندکس ارایه میشه تعداد محصول مثلا

اینجوری باید در یک رکورد باشه و هر ایندکس برای یک ستون استفاده بشه


  • 1399/04/27
  • ساعت 18:37

امکانش هست که یک قسمت آموزشی ضبط کنید و روش insert کردن داده های فرم به صورت آرایه را داخل دیتابیس توضیح بدید؟
 مثلا" همون مثالی که توی آموزش http request زدید را این بار داخل دیتابیس insert کنید به هر دو روشی که فرمودید یعنی یک بار داده ها در یک رکود ذخیره بشن با آیدی یکسان و یک بار هم در رکودهای مختلف با  آیدی های متفاوت و لطفا" کاربرد هر کدومشون در پروژه ها توضیح بدید


اگر این لطف را بکنید ممنونتون می شم

 


  • 1399/04/27
  • ساعت 18:53

به احتمال زیاد در پروژه داریم این مورد رو اگر نبود و وقت شد اضافه میکنم 


  • 1399/04/27
  • ساعت 18:53

ممنون از شما


  • 1399/04/27
  • ساعت 18:55

سلامت باشید


logo-samandehi