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


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.