نمایش یک آرایه در یک ستون از جدول دیتابیس

- 1 ماه پیش
توسط Ashkan Nazari آپدیت شد
mehdi Hesami ( 1515 تجربه )
1 ماه پیش

سلام
دوستان عزیز قصد دارم در کوئری select خودم که از 3 تا Table با رابطه های بین شون یکی از ستونها خودش یک آرایه باشه

سه تا جدول داریم با نامهای زیر :
users
posts
posts_media
در این جداول به ترتیب اطلاعات کاربران ، پست ها و رسانه های تصویری و عکسهای یک پست قرار میگیرند.

من میخوام یک کوئری داشته باشم که لیست پست ها رو برای یک اپلیکیشن موبایل در قالب json برگردونم که در بحث json هیچ مشکلی وجود ندارد و سئوال اینجاست که چطور میتونم تصاویر یک پست رو که میتونه چند تا باشه و در جدول posts_media ذخیره شده اند رو در یک ستون و بصورت آرایه ای در کنار نام یوزر از جدول users و کپشن پست از جدول posts بر گردونم

تقریبا چیزی که من مد نظرم هست شبیه به خروجی زیر هست :

{
    "post_id": 29,
    "avatar": "images/avatar/avatar-no.svg",
    "fname": "علی",
    "lname": "محمدی",
    "caption": "دوستان امروز شمال هستیم 
    "files":
    [
        {
            "file": "web1.mp4",
        }
        ,
        {
            "file": "web2.mp4",
        }

    ]
},
{
    "post_id": 30,
    "avatar": "images/avatar/avatar-no.svg",
    "fname": "حسین",
    "lname": "موسوی",
    "caption": "دوستان امروز بندر انذلی هستیم جاتون خیلی خالیه
    "files":
    [
        {
            "file": "html.mp4",
        }
        ,
        {
            "file": "css.mp4",
        }

    ]
}

در واقع قصد دارم ستونی بنام files هم داشته باشم که رکوردهای هر پست رو از جدول رسانه ها استخراج و به همراه اطلاعات دیگه پست نمایش بده
ممنون میشم کسانی که تجربه دارن انتقال بدن
سپاس گذارم

Ashkan Nazari ( 5635 تجربه )
1 ماه پیش

سلام
کار ساده ای هست. باید از روابط استفاده کنید وبعد به صورت زیر کد بزنید

$user = User::all();
        foreach ($user as $userItem) {
            foreach ($userItem->Post as $postItem) {
                $postItem->posts_media;
            }
        }

نتیجه یک ارایه تو در تو هست که اطالاعات همه کاربران توش هست. توی اطلاعات هر کاربر اطلاعات همه ی پست های اون کاربر هست. توی اطلاعات هر پست تصاویر اون پست هست.

mehdi Hesami ( 1515 تجربه )
1 ماه پیش

@ashkannazari248
عزیز این روش بهینه نیست برای تعداد رکوردهای چند هزار تایی
من میخوام خود DBMS اینو هندل کنه نه زبان برنامه نویسی

Ashkan Nazari ( 5635 تجربه )
1 ماه پیش

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

برای ارسال پاسخ باید وارد سایت شوید