Tengo dos modelos:
publicaciones
class posts extends Eloquent { public $timestamps = false; protected $table = 'links'; public function commented() { return $this->hasMany('App\Models\comments','post_id')->where('reply',true); } }comentarios
class comments extends Eloquent { public $timestamps = false; protected $table = 'comments'; }Y los datos en las tablas son así:
publicar datos
{ "_id" : ObjectId("58837a559caf2fc968adc64d"), "post_title" :'xyz' } { "_id" : ObjectId("58837a559c6as77777as"), "post_title" :'abc' }datos de comentarios
{ "_id" : ObjectId("58837a559caf2fa6a8s0v0z"), "post_id" :'58837a559caf2fc968adc64d' "reply":true, "comment":'1st comment' } { "_id" : ObjectId("58837a55z7asd09zx865v9"), "post_id" :'58837a559c6as77777as', "reply":false, "comment":'comment' } { "_id" : ObjectId("58837a559caf2fa6a8s0v0z"), "post_id" :'58837a559caf2fc968adc64d' "reply":true, "comment":'2nd comment' }Ahora quiero obtener todas las publicaciones que contienen un recuento de comentarios (que responden = verdadero) es mayor que 0. Gracias.
Una actualización de la respuesta de Alexey Mezenin.
Post::has('commented')->whereHas('comments', function($query) { $query->where('reply', '=', true); })->get();Prueba esto. Obtenga todas las publicaciones y luego acceda a cada publicación para buscar la única vez que tenga la respuesta verdadera:
$posts = Post::get() $array = ''; foreach ($posts as $post) { if ($post->commented->reply == True) { $record = $post; $array[] = $record; } } return $array;