راکت

ارور در متد map

4 پاسخ

دوستان من در lumen از متد map در collection استفاده میکنم ولی با ارور زیر مواجه میشم:
Call to undefined method App\Course::mapInto()
میشه راهنمایی کنید

public function toArray($request)
    {
        return [
            'data' => $this->collection->map(function ($item) {
                return [
                    'title' => $item->title,
                    'body' => $item->body,
                    'image' => $item->img,
                ];
            })

        ];
    }
    public function with($request)
    {
        return [
            'status'=>'success'
        ];
    }
reza ataei
reza ataei
@rezaataei54
ثبت پرسش جدید

پاسخ‌ها

4
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

The map method iterates through the collection and passes each value to the given callback. The callback is free to modify the item and return it, thus forming a new collection of modified items:

متد map کالکشن رو پیمایش میکنه و به ازای هر یک گزینه شرط داخل کلوژر رو اعمال میکنه
اما شما یک آرایه رو بهش پاس دادید.

در عوض میتونی از متد mapWithKeys استفاده کنی:

$keyed = $collection->mapWithKeys(function ($item) {
    return ['title' => $item['title']];
});

$keyed->all();
reza ataei
reza ataei
@rezaataei54

تخصص: در حال یادگیری.....

@ali.bayat
ممنون از پاسختون.ولی من تو فراخوانی یک آی دی خاص با این ارور مواجه میشم.مثلا فراخوانی یک کاربر با id=1
مثال:http://localhost:8000/api/v1/courses/1
توضیح تصویر رو وارد کنید

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

احتمالا Instance کلاس کوئری بیلدر برگشت داده میشه و شما سعی میکنید از متد mapInto روی کوئری بیلدر استفاده کنید..
ابتدا نتایج رو به کالکشن تبدیل کنید..

reza ataei
reza ataei
@rezaataei54

تخصص: در حال یادگیری.....

@rezaataei54
مشکل از کنترلر بود که تو متد تعریف شده مجدد از collection استفاده کرده بودم

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام