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 = AppNote->find(4);
$note->tags()->get();

خروجی رو درست میده .
اما چرا باید فقط یک note رو پیدا کنیم و بعد تمام تگ هاشو.
میخوام تمام note هایی که tag دارند رو نمایش بده . یا note های 3 و 4 . ولی جواب نمیده.
$note = AppNote->find([3, 4]);
$note->tags()->get();

و در این حالت این خطا رو میده
BadMethodCallException with message 'Method Illuminate/Database/Eloquent/Collection::tags does not exist.'

تشکر شده توسط:

مفهومش همون نیست ولی در داخل داره از Join استفاده میکنه. علت مشکل شما اینه که خروجی find وقتی چند عنصر رو مشخص میکنید، یک آرایه یا بهتر بگم یک Collection هست نه یک مدل مجزا و درنتیجه متدهای Relation و... روش کار نمیکنن و باید با حلقه، مقادیر رو پیمایش و اطلاعات دلخواهتون رو استخراج کنین. باید اینطوری کار کنید:
$notes = [];
foreach (AppNote::find([3,4]) as $note) {
   $notes = array_merge($notes, $note->tags()->get());
}

تشکر شده توسط:

برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید

برچسب : نویسنده : خنجی prog بازدید : 211 تاريخ : جمعه 25 بهمن 1398 ساعت: 0:51