Laravel Eloquente:Muitos-para-Muitos Selecione itens sem filhos (usando dinâmica)
Pergunta
Muito instalação padrão:
tabela de "Posts", tabela de "Categorias" dinâmica "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');
}
tabela dinâmica com a devida chaves estrangeiras de instalação.
Eu não posso parecem figura como obter TODOS os POSTS, sem quaisquer categorias (ou para que o assunto receba categorias, sem quaisquer publicações, por exemplo, vazia categorias)
Eu gostaria de fazer isso em eloqüente, mas em sql seria algo como:
SELECT *,
(SELECT COUNT(id) cnt
FROM posts_categories pc
WHERE pc.post_id = p.id) AS cnt
FROM posts p
HAVING cnt = 0;
Solução
Você pode usar isso para obter todas as Posts
que não tenham Category
:
$posts = Post::has('categories', '=', 0)->get();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow