class BuscarXCodBarras extends Component
{
    public string $codigoBarras = '';
    public function buscar()
    {
        $articulos = Articulo::with('precios')->whereHas('precios', function($q) use ($this->codigoBarras){
            $q->where()
        })
Como paso un parámetro a una funcion de whereHas sin tener que hacer:
$codbar = $this->codigoBarras;
$articulos = Articulo::with('precios')->whereHas('precios', function($q) use ($codbar){
¿Alguna ayuda?
Gracias.
Alberto.
Hola Alberto,
Dentro de la función anónima que le pasás al whereHas tenés acceso a la variable $this. El ejemplo que subiste podrías reescribirlo de este modo también:
$articulos = Articulo::with("precios")->whereHas("precios", function($query) {
    $query->where("codigo", $this->codigoBarras);
};
Si en tu aplicación repetís mucho estos bloques de código entonces otra opción podría ser crear scopes genéricas. Por ejemplo podrías definir un modelo base de la siguiente manera:
use Illuminate\Database\Eloquent\Builder;
class BaseModel
{
    function scopeCustomWhereHas(Builder $query, $attr, $value) {
        $query->where($attr, $value);
    }
}
Y luego usarlo de este modo:
class Articulo extends BaseModel
{
    //
}
Articulo::query()->customWhereHas("codigo", $this->codigoBarras);
Espero que te sirva. Saludos,
Gracias.
Si que funciona. No es lógico y no se me ocurrio probar. Supongo que 'use' sólo tiene sentido con las variables locales del método contenedor.