لارافيل بليغ:متعدد إلى متعدد تحديد العناصر بدون عناصر فرعية (باستخدام المحور)

StackOverflow https://stackoverflow.com//questions/25028078

  •  21-12-2019
  •  | 
  •  

سؤال

الإعداد القياسي الجميل:

الجدول "المشاركات" ، الجدول "فئات" pivot "posts_categories"

/************** CATEGORY MODEL *********/
class Category extends Eloquent
{
 /** standard code**/

public function posts()
{
    return $this->belongsToMany('Post','posts_categories');
}

}

/************* POSTS MODEL ************/
class Post extends Eloquent
{
/** the usual **/
public function categories()
{
    return $this->belongsToMany('Category', 'posts_categories');
}

الجدول المحوري مع الإعداد المناسب للمفاتيح الخارجية.

يبدو أنني لا أستطيع معرفة كيفية الحصول على جميع المنشورات دون أي فئات (أو الحصول على فئات دون أي مشاركات، مثل الفئات الفارغة)

أود أن أفعل ذلك بطريقة بليغة، ولكن في SQL سيكون الأمر مثل:

SELECT *, 
       (SELECT COUNT(id) cnt 
        FROM posts_categories pc 
        WHERE pc.post_id = p.id)  AS cnt   
FROM posts p 
HAVING cnt = 0;
هل كانت مفيدة؟

المحلول

يمكنك استخدام هذا للحصول على كل شيء Posts التي لا تملك Category:

$posts = Post::has('categories', '=', 0)->get();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top