Laravel Elocuente: muchos a muchos artículos seleccionados sin hijos (usando pivote)

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

  •  21-12-2019
  •  | 
  •  

Pregunta

Configuración bastante estándar:

Mesa "Publicaciones", Mesa "Categorías" Pivote "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');
}

tabla de pivote con la configuración adecuada de las llaves extranjeras.

Parece que no puedo imaginar cómo obtener todos los puestos sin ninguna categoría (o para esa materia obtener categorías sin ninguna publicación, como categorías vacías)

Me gustaría hacer esto en elocuentes, pero en SQL sería algo así:

SELECT *, 
       (SELECT COUNT(id) cnt 
        FROM posts_categories pc 
        WHERE pc.post_id = p.id)  AS cnt   
FROM posts p 
HAVING cnt = 0;

¿Fue útil?

Solución

Puede usar esto para obtener todo Posts que no tenga Category:

$posts = Post::has('categories', '=', 0)->get();

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top