لارافيل بليغ:متعدد إلى متعدد تحديد العناصر بدون عناصر فرعية (باستخدام المحور)
سؤال
الإعداد القياسي الجميل:
الجدول "المشاركات" ، الجدول "فئات" 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();
لا تنتمي إلى StackOverflow