with whereraw transaction php sql laravel eloquent

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() .