php - transaction - whereraw laravel
Cómo verificar hasMany relato registro está vacío en laravel elocuente (2)
Necesito obtener esos registros que no se han unido a muchas tablas mi consulta como esta
$result = Recipes::select(''id'')->where("name", ''like'', ''%'' . $item . ''%'')
->with([''categoryItem''])
->get();
Y mi salida es
Array
(
[0] => Array
(
[id] => 1
[category_item] => Array
(
[0] => Array
(
[id] => 2
[foodable_id] => 1
[foodable_type] => Recipes
[created_at] => 2017-04-14 16:18:22
)
)
)
[1] => Array
(
[id] => 4
[category_item] => Array
(
)
)
)
Quiero obtener solo aquellos registros que tengan detalles de categoría de categoría vacíos. en el siguiente ejemplo, quiero obtener el registro del índice 1, así que ¿cómo puedo dar condiciones con la consulta?
Hola Tal vez esto puede ayudar. No olvides agregar en la parte superior de tu archivo:
use DB;
Y tu resultado será algo como esto
$result = Recipes::select(''id'')->where("name", ''like'', ''%'' . $item . ''%'') ->whereHas(''categoryItem'', function($q) { $q->where(DB::raw(''count(*)),''>'', 0); })->get();
No probé la función de conteo espero que esto funcione, buena suerte con eso
Si te entendí correctamente y quieres obtener recetas que no tienen categoryItem
, quieres utilizar el método doesntHave()
:
Recipes::where(''name'', ''like'', ''%''.$item.''%'')
->doesntHave(''categoryItem'')
->get();
Supongo que la relación categoryItem
está definida ya que estás tratando de usarla en el método with()
.