Quiero obtener el recuento de los elementos de los materiales.

Subcategoría:

public function materials(){
        return $this->hasMany('App\Material');
    }

Materiales:

 public function subcategories(){
        $this->belongsTo('App\SubCategory','SubCategoria_id');
    }

Quiero obtener el recuento de los elementos que tienen el subcategory_id

'quantidade' => $ subcategoría-> material-> count ()

Recibo un error en 1054 Columna desconocida 'material.subcategory_id'

1
Paulo Rodrigues 16 ene. 2018 a las 19:33

3 respuestas

La mejor respuesta

Como está utilizando una clave foránea personalizada, debe especificarla. Entonces, cambie la relación a:

public function materials()
{
    return $this->hasMany('App\Material', 'SubCategoria_id');
}

Y luego use el nombre de relación apropiado:

$subcategory->materials()->count()
0
Alexey Mezenin 16 ene. 2018 a las 16:36

Deberías usar la relación para contar. Esto contará los elementos que usan la base de datos. Deberías usar la función así:

'quantidade' => $subcategory->materials()->count()

Y en el modelo, también debe informar la identificación en hasMany:

public function materials(){
    return $this->hasMany('App\Material' ,'SubCategoria_id');
}

También debe notar que sería mejor si nombra sus clases y variables de acuerdo con los patrones de Laravel.

3
Laerte 16 ene. 2018 a las 16:35

¿Su tabla de materiales tiene una columna subcategory_id? Este error podría indicar que no existe, por lo tanto, falla cuando prueba la relación.

Mientras exista la columna, la relación debe ser válida y usted debe poder contar los resultados.

1
a-- 16 ene. 2018 a las 16:35