স্বতন্ত্র ওআরএম লারাভেল 5 আইডির অ্যারে পান


87

আমি স্পষ্টতত ORM ল্যারাভেল 5.1 ব্যবহার করছি, আমি 0 এর চেয়ে বেশি আইডির একটি অ্যারে ফিরিয়ে দিতে চাই, আমার মডেল বলে test

আমি চেষ্টা করেছি :

$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();

এটি ফিরে:

Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )

তবে আমি চাইছি ফলাফলগুলি সাধারণ অ্যারেতে যেমন হয়:

Array ( 1,2 )

উত্তর:


213

আপনি ব্যবহার করতে পারেন lists():

test::where('id' ,'>' ,0)->lists('id')->toArray();

দ্রষ্টব্য: আপনি যদি মডেলগুলি Studly Caseবিন্যাসে সংজ্ঞায়িত করেন তবে আরও ভাল Test


আপনি এটি ব্যবহার করতে পারেন get():

test::where('id' ,'>' ,0)->get('id');

আপডেট: (সংস্করণগুলির জন্য> = 5.2)

lists()পদ্ধতি ছিল অবচিত নতুন সংস্করণে >= 5.2, এখন আপনি ব্যবহার করতে পারে pluck()পরিবর্তে পদ্ধতি:

test::where('id' ,'>' ,0)->pluck('id')->toArray();

উল্লেখ্য: আপনি যদি একটি প্রয়োজন স্ট্রিং একটি, উদাহরণস্বরূপ ফলক , আপনি ফাংশন ছাড়া ব্যবহার করতে পারেন toArray () অংশের মতো:

test::where('id' ,'>' ,0)->pluck('id');

4
প্লাক ('আইডি') অ্যারের সাথে অ্যারে হয় ('0' => 12, '1' => 14) এবং ইত্যাদি, যখন যেখানে (যেখানে 'আইডি', $ অ্যারে) ব্যবহৃত হয়, এটি আইডি দ্বারা নয়, অ্যারে দ্বারা নির্বাচন করে কী, তাই 0,1 দ্বারা ...
গেডিমিনাস

4
toArray()মত একটি অ্যারের ফিরে যাওয়া উচিত[12,14]
জাকারিয়া Acharki

4
ওহ হ্যাঁ, আপনি ঠিক বলেছেন, আমি ডিবাগবার পিঁপড়া প্রিন্টের মাধ্যমে ডিবাগ করছিলাম, এবং তারা উভয়ই কীগুলির সাথে অ্যারে মান দেখিয়েছিল, তবে কোনও কী নেই। ধন্যবাদ!
গেদিমিনাস

আমরা একটি প্রকল্পের জন্য 4.2 এ আটকে রয়েছি, তাই আমি -> তালিকাগুলি ('আইডি') রেফারেন্স রাখার প্রশংসা করি। যদিও এটি সরাসরি একটি অ্যারে তৈরি করেছে, এটির> - অ্যারে করতে হবে না।
ডাস্টিন গ্রাহাম

18

একটি থেকে Collection, আপনি এটি করতে পারেন এমন অন্য উপায় হ'ল:

$collection->pluck('id')->toArray()

whereIn()উদাহরণস্বরূপ, এটি একটি সূচকযুক্ত অ্যারে প্রদান করবে , উদাহরণস্বরূপ, কোয়েরিতে লারাভেল দ্বারা নিখুঁতভাবে ব্যবহারযোগ্য ।


4
ড্রপ ডাউন তালিকার জন্যও ব্যবহৃত হয়।
বীরা

মডেল থেকে সংগ্রহটি সংগ্রহ করার জন্য \YourModel::all(['id'])... ->pluck...(কেবলমাত্র আইডি কলাম নির্দিষ্ট করে আপনি মডেলটিতে সমস্ত ডেটা লোড করেন না)
jave.web

5

এর সঠিক উত্তর হ'ল পদ্ধতি lists, এটি খুব সহজ:

$test=test::select('id')->where('id' ,'>' ,0)->lists('id');

শ্রদ্ধা!


একাধিক থেকে অনেক সম্পর্কের মাধ্যমে আপনি কীভাবে সম্পর্কিত আইডিটির তালিকা অ্যারে পাবেন?
প্যাথ্রোস

হতে পারে আপনি ডিবি বর্গ ব্যবহার করতে পারেন, উদাহরণস্বরূপ: ডিবি :: টেবিল ('name_of_table') -> যেখানে ('শর্ত') -> তালিকাগুলি ('আইডি');
র‌্যাডেমস ই। হার্নান্দেজ

5

আপনি all()পদ্ধতির পরিবর্তে পদ্ধতি ব্যবহার করতে পারেন toArray()(আরও দেখুন: লারাভেল ডকুমেন্টেশন ):

test::where('id' ,'>' ,0)->pluck('id')->all(); //returns array

আপনার যদি প্রয়োজন হয় তবে আপনি সংযুক্তি stringছাড়াই ব্যবহার করতে পারেন toArray():

test::where('id' ,'>' ,0)->pluck('id'); //returns string

4

তালিকা () পদ্ধতি সম্পর্কে পড়ুন

$test=test::select('id')->where('id' ,'>' ,0)->lists('id')->toArray()

যখন আমি ফলক ফাইলে in_array_command ব্যবহার করি তখন এই ত্রুটিটি দেখায়। > in_array () অ্যারে হতে 2 পরামিতি আশা, বস্তুর দেওয়া
ভীতু

ওহ এখন আমি আপনাকে পেয়েছি, আপনাকে অ্যারেতে কল করতে হবে (), তালিকা () রিটার্ন সংগ্রহ
আমির বার

1

আপনি যদি ব্যবহার করছেন তবে কেবলমাত্র একটি অতিরিক্ত তথ্য DB:

DB::table('test')->where('id', '>', 0)->pluck('id')->toArray();

এবং যদি স্বতন্ত্র মডেল ব্যবহার করে:

test::where('id', '>', 0)->lists('id')->toArray();

0

যদিও আপনি উত্তরটি চিহ্নিত করেছেন, এটি অনেক সহজ পদ্ধতির

App\User::pluck('id')->toArray()

-2

আপনি নির্বাচিত বৈশিষ্ট্যের অ্যারে পেতে সমস্ত () পদ্ধতিও ব্যবহার করতে পারেন।

$test=test::select('id')->where('id' ,'>' ,0)->all();

শ্রদ্ধা


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