Laravel Elocuente: muchos a muchos artículos seleccionados sin hijos (usando pivote)
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;
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