সুস্পষ্ট / সাবলীল ব্যবহার করে কীভাবে একক ক্যোয়ারী থেকে একাধিক সারি সন্নিবেশ করা যায়


143

আমার নিম্নলিখিত জিজ্ঞাসা রয়েছে:

  $query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();

এবং প্রত্যাশিত হিসাবে আমি নিম্নলিখিত ফলাফল পেতে:

[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]

উপরের ফলাফলটি অন্য টেবিলে অনুলিপি করার কোনও উপায় আছে যাতে আমার টেবিলটি দেখতে এইভাবে লাগে?

ID|user_id|subject_id
1 |8      |9
2 |8      |2

আমার সমস্যাটি হ'ল এটি $queryযে কোনও সংখ্যক সারি আশা করতে পারে এবং তাই আমি জানি না যে কীভাবে সারিগুলির একটি অজানা সংখ্যার মধ্য দিয়ে পুনরাবৃত্তি করা যায়।


যদি কারও এখনও এটির প্রয়োজন হয়: github.com/laravel/framework/issues/1295#issuecomment-193025045
— 4givN

উত্তর:


292

এলওলিউড বা ক্যোয়ারী বিল্ডার ব্যবহার করে লারাভেলে একটি বাল্ক সন্নিবেশ করা সত্যিই সহজ।

আপনি নিম্নলিখিত পদ্ধতির ব্যবহার করতে পারেন।

$data = [
    ['user_id'=>'Coder 1', 'subject_id'=> 4096],
    ['user_id'=>'Coder 2', 'subject_id'=> 2048],
    //...
];

Model::insert($data); // Eloquent approach
DB::table('table')->insert($data); // Query Builder approach

আপনার ক্ষেত্রে ইতিমধ্যে $queryভেরিয়েবলের মধ্যে ডেটা রয়েছে ।


7
অবজেক্ট সংগ্রহের ক্ষেত্রে -> টু অ্যারে () পদ্ধতিটি ব্যবহার করুন।
— কৃজনিক হাসানাজ

35
এটি টাইমস্ট্যাম্পগুলি সন্নিবেশ করে না।
— লোক_ফকিং

20
আপনার অ্যারেতে 'made_at' => তারিখ ('Ymd H: i: s'), 'modified_at' => তারিখ ('Ymd H: i: s') যুক্ত করুন। উত্স: স্ট্যাকওভারফ্লো.com
— জেআর টান

8
আমি অবাক হয়েছি কেন লারাভেলের কাছে এর জন্য 'ক্রিয়েটম্যানি' জাতীয় কিছু নেই।
— অভিষেক

4
আমি কীভাবে আইডিএস উদ্ধার করব?
— লুভিয়াস

21

বুদ্ধিমান ব্যবহার

$data = array(
    array('user_id'=>'Coder 1', 'subject_id'=> 4096),
    array('user_id'=>'Coder 2', 'subject_id'=> 2048),
    //...
);

Model::insert($data);

সন্নিবেশ হ'ল ক্যোয়ার বিল্ডারের পদ্ধতি। অ্যাকসেসর এবং মিউটররা এই সন্নিবেশ নিয়ে কাজ করবে না
— হাসান দাদ খান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.