Laravel Eloquent: molti-to-molti oggetti selezionati senza figli (usando il pivot)
Domanda
Impostazione graziosa standard:
Table "Posts", Tabella "Categorie" 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');
}
.
Tabella pivot con set di tasti estranei corretti.
Non riesco a capire come ottenere tutti i messaggi senza categorie (o per quella materia ottenere categorie senza messaggi, come categorie vuote)
Mi piacerebbe farlo in eloquente, ma in SQL sarebbe qualcosa come:
SELECT *,
(SELECT COUNT(id) cnt
FROM posts_categories pc
WHERE pc.post_id = p.id) AS cnt
FROM posts p
HAVING cnt = 0;
. Soluzione
È possibile utilizzare questo per ottenere tutto Posts
che non dispongono di Category
:
$posts = Post::has('categories', '=', 0)->get();
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow