leftJoin('tax_rates', function($join) { $join->on('tax_rates.id', '=', 'products.default_tax_rate_id') ->whereNull('tax_rates.deleted_at'); }) ->where('products.account_id', '=', $accountId) ->where('products.deleted_at', '=', null) ->select( 'products.public_id', 'products.product_key', 'products.notes', 'products.cost', 'tax_rates.name as tax_name', 'tax_rates.rate as tax_rate', 'products.deleted_at' ); } public function save($data, $product = null) { $publicId = isset($data['public_id']) ? $data['public_id'] : false; if ($product) { // do nothing } elseif ($publicId) { $product = Product::scope($publicId)->firstOrFail(); \Log::warning('Entity not set in product repo save'); } else { $product = Product::createNew(); } $product->fill($data); $product->save(); return $product; } }