এই সংগ্রহের উদাহরণে সম্পত্তি [শিরোনাম] বিদ্যমান নেই not


95

আমি ল্যারাকাস্টের ভিডিও অনুসরণ করছি: বেসিক মডেল / কন্ট্রোলার / ওয়ার্কফ্লো দেখুন

আমার কাছে একটি টেবিলের যোগাযোগের তথ্য রয়েছে।

CREATE TABLE `about` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

আমি নিয়ামক ফাইলটিতে নিম্নলিখিত কোড ব্যবহার করে ডেটা পাস করার চেষ্টা করছি:

public function index()
{
    $about = Page::where('page', 'about-me')->get(); //id = 3

    return view('about', compact('about'));
}

আমি নীচের মত কোডটি দেখানোর চেষ্টা করার সময়,

@section('title')
    {{$about->title}}
@stop

@section('content')
    {!! $about->content !!}
@stop

আমি ত্রুটি পেয়েছি যা বলে:

এই সংগ্রহের উদাহরণে সম্পত্তি [শিরোনাম] বিদ্যমান নেই not (দেখুন: ই: \ ল্যারাগন \ www \ নিউজসাইট \ সংস্থানসমূহ \ মতামত \ সম্পর্কে.ব্লেড.এফপি)

তবে আমি যদি কন্ট্রোলার ফাইলে পুনরুদ্ধার পদ্ধতিটি পরিবর্তন করি তবে এটি কাজ করে।

public function index()
{
    $about = Page::find(3);

    return view('about', compact('about'));
}

আমি যখন dd($about)প্রথম ক্ষেত্রে ( where()->get()) ব্যবহার করি তখন ডেটা একটি অ্যারের দ্বারা আবদ্ধ হয়। দ্বিতীয় ক্ষেত্রে ( find(3)) এটি প্রত্যাশার মতো ডেটা প্রদর্শন করে।

আমি কি ভুল করছি?

উত্তর:


233

আপনি যখন ব্যবহার করছেন তখন আপনি get()একটি সংগ্রহ পান । এক্ষেত্রে বৈশিষ্ট্য পেতে আপনাকে এটিকে পুনরাবৃত্তি করতে হবে:

@foreach ($collection as $object)
    {{ $object->title }}
@endforeach

অথবা আপনি কেবল এর সূচক অনুসারে কোনও একটি বস্তু পেতে পারেন:

{{ $collection[0]->title }}

অথবা সংগ্রহ থেকে প্রথম অবজেক্টটি পান:

{{ $collection->first() }}

আপনি যখন ব্যবহার করছেন find()বা first()আপনি কোনও বস্তু পেয়েছেন , তাই আপনি সাধারণ সহ বৈশিষ্ট্য পেতে পারেন:

{{ $object->title }}

হ্যাঁ, মডেল চালানোর পরে-> পান () একটি অবজেক্টের সাথে একটি তালিকা পান, সেই কারণে সর্বদা ডেটা দেখান এবং আমি এটি অ্যাক্সেস করতে পারি না। প্রথমে বেরিয়ে আসার পরে () তারপরে অবজেক্টটি পান
রুজ

4
লারভেল ডকুমেন্টেশন সন্ধান, পাঠ এবং পরীক্ষার 4 ঘন্টা পরে এবং প্রচুর স্ট্যাকওভারফ্লো প্রশ্ন / উত্তর দেখার পরে, আপনি কেবলমাত্র একজনই বলেছিলেন যে সংগ্রহ () সংগ্রহ পুনরুদ্ধার করে। আপনিই আমাকে চেয়ার থেকে ঝাঁপিয়েছিলেন এবং বুঝতে পেরেছিলেন যে আমার সমস্ত প্রশ্নগুলি সঠিক ছিল। সমস্যাটি ছিল "মুদ্রণ" এ। আমার হৃদয়ের নীচ থেকে, এই উত্তরের জন্য একটি বিশাল আপনাকে ধন্যবাদ! আমি সত্যিই এটা বুঝাচ্ছি!
গ্রিনেক্স

22

সঙ্গে get()পদ্ধতি যদি আপনি একটি সংগ্রহে (সমস্ত ডেটা যে প্রশ্নের সাথে মেলে), ব্যবহারের চেষ্টা পেতে first()পরিবর্তে, এটা কেবল এক উপাদান আসতে, এভাবে:

 $about = Page::where('page', 'about-me')->first();

2
$about = DB::where('page', 'about-me')->first(); 

স্থির get()

এটি আমার প্রকল্পে কাজ করে । ধন্যবাদ


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

1

আপনার নিয়ন্ত্রণের মধ্যে সংগ্রহের কীওয়ার্ড ব্যবহার করা উচিত। এখানকার মত..

public function ApiView(){
    return User::collection(Profile::all());
}

এখানে, ব্যবহারকারী হ'ল সংস্থান নাম এবং প্রোফাইল হ'ল মডেল নাম। ধন্যবাদ.


1

কারখানার ফাংশনগুলির সাথে কাজ করার সময় কোনও ব্যক্তি এটি পেতে পারে, তাই আমি এটি বৈধ বাক্য গঠন নিশ্চিত করতে পারি:

$user = factory(User::class, 1)->create()->first();

আপনি যদি এরকম কিছু করেন তবে সংগ্রহের উদাহরণটি ত্রুটি দেখতে পাবেন:

$user = factory(User::class, 1)->create()->id;

সুতরাং এটিকে পরিবর্তন করুন:

$user = factory(User::class, 1)->create()->first()->id;

0

$about->first()->idঅথবা $stm->first()->titleএবং আপনার সমস্যার সমাধান করা হয়েছে।


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