Saltar al contenido

¿Cómo filtrar una tabla dinámica usando Eloquent?

Esta es la respuesta más completa que encomtrarás brindar, sin embargo obsérvala pausadamente y analiza si es compatible a tu trabajo.

Solución:

Laravel 4.1 trae nativo wherePivot y orWherePivot métodos, que es directamente una solución a mi problema.

Cuando sea que llames withPivot('foo')Laravel haces:

SELECT ... `table`.`foo` AS `pivot_foo` FROM `table` ...

Respuesta fija:

MySQL en particular permite el uso de alias de columna en HAVING, GROUP BY y ORDER BY cláusulas, pero no en WHERE cláusulas.

Ambas cosas HAVING y WHERE se utilizan para filtrar consultas, pero se comportan de forma ligeramente diferente: HAVING se aplica después GROUP BY y WHERE es antes

Como regla general de SQL, no debe usar alias de columna (pivot_foo en ese caso) para agrupar, filtrar o algo por el estilo, ya que puede que no funcione con otras bases de datos SQL.

Aunque no se recomienda, es posible utilizar:

return User::find(1)->works()->having('pivot_active','=','1')->get();

Intento configurar todas las relaciones en ambas direcciones, ya que esto permite el uso de propiedades dinámicas, por ejemplo $user->works().

class Collection extends Eloquent 
    public function contents()
    
        return $this->belongsToMany('Content', 'collection_content', 'collection_id', 'content_id')->withPivot('collection_id', 'group_id', 'field_identifier');
    


class Content extends Eloquent 
    public function collections()
    
        return $this->belongsToMany('Collection', 'collection_content', 'collection_id', 'content_id')->withPivot('collection_id', 'group_id', 'field_identifier');
    


class CollectionContent extends Eloquent 
    public function content()
    
        return $this->belongsTo('Content');
    

    public function collection()
    
        return $this->belongsTo('Collection');
    

Entonces consulta:

$works = User::find(1)->works()->where('active', 1)->get();

La documentación de Eloquent es horrible cuando se trata del uso de tablas dinámicas. Este es un gran tutorial: http://www.veloped.be/2013/08/30/laravel-4-pivot-table-example-attach-and-detach/

Aquí puedes ver las comentarios y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *