¿Cómo buscar a partir de datos de relación? en laravel

¿Cómo buscar a partir de datos de relación? en laravel

public function scopeSearch($query, $value)
{
    $searchValues = explode(' ', $value);
    if (!$value) return $query;
    return $query->where(function ($q) use ($searchValues) {
        foreach ($searchValues as $token) {
            $q->orWhere('name', 'like', "%{$token}%");
            $q->orWhere('street', 'like', "%{$token}%");
        }
    });
}

Quiero buscar los datos. Este modelo también tiene

public function brands()
{
    return $this->belongsToMany(Brand::class, 'dealer_brands');
}
public function province()
{
    return $this->belongsTo(Province::class);
}

¿Cómo puedo obtener datos de la relación? Al igual que el distribuidor (modelo) tiene datos Nmae = josh, brand_id = 1 {brand.name = samsung}, provincia_id = 2 (provincia.nombre = "aligora"). Cuando busco Josh Samsung Alogora, quiero obtener los datos. Cuando solo busco aligora, quiero obtener los datos del modelo que tiene provincia aligora. ¿CÓMO PUEDO MODIFICAR EL CÓDIGO?

Mostrar la mejor respuesta

observando sus relaciones modelo. Esto puede funcionar para usted

    public function scopeSearch($query, $value)
    {
        if (!$value) return $query;
        $searchValues = explode(' ', $value);
        return $query->where(function ($q) use ($searchValues) {
            foreach ($searchValues as $token) {
                $q->where('name', 'like', "%{$token}%")
                    ->orWhere('street', 'like', "%{$token}%")
                    ->orWhereHas('brands', function ($sub_q) use ($searchValues) {
                        $sub_q->where('name', 'like', "%{$token}%")
                            ->orWhere('street', 'like', "%{$token}%");
                    })
                    ->orWhereHas('province', function ($sub_q) use ($searchValues) {
                        $sub_q->where('name', 'like', "%{$token}%")
                            ->orWhere('street', 'like', "%{$token}%");
                    });
            }
        });
    }

No tengo ni idea de los nombres de las columnas en las tablas relacionadas, así que repito el nombre y la calle. puede cambiar según el requisito

Intenté modificar el código a whis, pero dice Columna desconocida 'marcas' en 'cláusula where' (SQL: seleccione * de dealers. El distribuidor (modelo) tiene una relación de pertenencia con la marca y pertenece a la provincia. ¿Cómo puede ¿Modifico eso?

lo siento, hubo un error en el código al usar 'o donde'. por favor verifique ahora nuevamente. Lo cambié a 'orwhereha' para la consulta de relación.