نمایش نتایج 1 تا 5 از 5

نام تاپیک: pivot table

  1. #1
    کاربر دائمی آواتار lady64
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    شمال ایران
    پست
    401

    pivot table

    سلام.
    آیا مفهوم pivot table همان join شدن هست ؟

    دو جدول notes و tags رابطه چند به چند دارند . در مدل note داریم :

    public function tags(){

    // return $this->belongsToMany(Tag::class )->withTimestamps()->withPivot('created_at');
    return $this->belongsToMany(Tag::class )->withPivot('created_at');
    }


    وقتی اینو مینویسیم :


    $note=App\Note->find(4);$note->tags()->get();



    خروجی رو درست میده .
    اما چرا باید فقط یک note رو پیدا کنیم و بعد تمام تگ هاشو.
    میخوام تمام note هایی که tag دارند رو نمایش بده . یا note های 3 و 4 . ولی جواب نمیده.

    $note=App\Note->find([3,4]);$note->tags()->get();

    و در این حالت این خطا رو میده
    کد HTML:
    BadMethodCallException with message 'Method Illuminate/Database/Eloquent/Collection::tags does not exist.'
    آخرین ویرایش به وسیله lady64 : پنج شنبه 03 بهمن 1398 در 09:09 صبح

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    1,975

    نقل قول: pivot table

    1 - pivot برای تیبل هایی هست که رابطه چند به چند دارن
    وقتی تیبل ها رابطه یک به یک یا یک به چند دارن میتونی 2 تا تیبل رو مستقیم به هم وصل با کلید خارجی کنی
    ولی وقتی چند به چند هستن از pivot استفاده میکنی
    مثلا تیبل پرد و فرزند داریم اگه رابطه یک به چند باشه یعنی یک پدر چند فرزند داشته باشه
    ساختارشو ناینجوری میشه که

    تیبل پدر : شناسه , نام
    تیبل فرزند : شناسه , شناسه پدر , نام

    ولی اگه چند به چند باشن نمیتونی شناسه پدر رو تو تیبل فرزند بزاری و وصلشون کن چون یک فرزند ممکنه برای چندین پدر باشه و بیش از یک شناسه پدر داره

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


    تیبل پدر : شناسه , نام
    تیبل فرزند : شناسه , نام
    تیبل پدر_فرزند : شناسه پدر , شناسه فرزند


    2 - وقتی یک ردیف رو میخونی یه آبجکت برمیگردونه
    و آبجکت میتونه توابع کلاس رو صدا بزنه (اگه متوجه نمیشی این رو به مفاهیم برنامه نویسی شی گرا برمیگرده )
    ولی وقتی چند تا ردیف رو بخونی یه آرایه برمیگردونه و آرایه نمیتونه تابع کلاس رو صدا بزنه



    میتونی همچین چیزی بنویسی


    $notes=App\Note:has('tags')->find([3,4]);
    foreach($notes as $note )
    {
    $tags = $note->tags;
    }






    بهتره که اسم مدل ها و توابع رلیشن توی مدل با حروف بزرگ شروع بشه که با نام خونه های دیتابیس فرق کنن

  3. #3
    کاربر دائمی آواتار lady64
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    شمال ایران
    پست
    401

    نقل قول: pivot table

    قبلا ها دکمه ی تشکر بود .
    تشکر از شما . فکر میکنم دارم متوجه میشم .

  4. #4
    کاربر دائمی آواتار lady64
    تاریخ عضویت
    مرداد 1390
    محل زندگی
    شمال ایران
    پست
    401

    نقل قول: pivot table

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

    $notes = Note::find([3,4]);
    foreach($notes as $note )
    {
    echo $note->id.'<br/>';
    $tags= $note->tags;
    foreach($tags as $tag){
    echo $tag->name.'<br/>';
    }
    echo '<hr/>';
    }


    ولی بیشتر مدنظرم این بود که با این یک خط کد نتیجه رو بگیرم .

    $notes = Note::with('tags')->find([3,4]);


    چون وقتی در کد بالا $notes را return میکنیم در خروجی json هم نوت ها را میبینم و هم تگ های هر نوت را.

  5. #5
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    1,975

    نقل قول: pivot table

    وقتی با with بخونی توی نتیجه tags ها هم هستن یعنی اونها رو هم از دیتابیس میخونه .... ولی بازم باید با foreach چاپشون کنی
    چون توی ساختار برگشتی tag ها زیر مجموعه هر note هستن در نتیجه باید اول بری توی هر نوت بعد تگش رو بگیری

    به عبارت دیگه با یک خط همه نوت ها وتگ ها رو داری میخونی ولی برای نمایششون باید اینجوری اقدام کنی


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

    $tags = Tag::whereHas('Note' , function($q){
    $q->whereIn('id' , [3,4]);
    })->get();

تاپیک های مشابه

  1. pivot table تلریک
    نوشته شده توسط شهابسلطانی در بخش C#‎‎
    پاسخ: 2
    آخرین پست: یک شنبه 01 دی 1398, 21:48 عصر
  2. استفاده از pivot table
    نوشته شده توسط par_parvaz در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 07 مرداد 1391, 01:59 صبح
  3. سوال: ورود اطلاعات در pivot table
    نوشته شده توسط afrough.arian در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 10 فروردین 1390, 15:23 عصر
  4. مشكل در نمايش Report و Pivot Table
    نوشته شده توسط bita_ziba77 در بخش Access
    پاسخ: 9
    آخرین پست: یک شنبه 24 خرداد 1388, 10:39 صبح
  5. سوال: ایجاد Header برای یک فرم Pivot Table
    نوشته شده توسط M9.Moradi در بخش Access
    پاسخ: 1
    آخرین پست: پنج شنبه 02 آبان 1387, 19:18 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •