Laravel - 加入两张表格推荐搜索

时间:2017-04-03 09:54:23

标签: php mysql laravel eloquent

对于最后一个问题,我很抱歉,我没有以最好的方式表达我的怀疑 嘿,我必须知道超过N个房间的房产。

众议院模特

public function imovel(){
    return $this->belongsTo(Imovel::class); //property
}

公寓模型

public function imovel(){
    return $this->belongsTo(Imovel::class); //property
}

物业模型

public function atributos(){
        //se for moradia/  House
        if ($this->tipoimovel_id == 1) {
            return $this->hasOne(Moradia::class);
        }
        //se for apartamento/  Apartment
        else if ($this->tipoimovel_id == 2) {            
            return $this->hasOne(Apartamento::class);
        }
        //se for loja / SHOP
        else if ($this->tipoimovel_id == 3) {
            return $this->hasOne(Loja::class);
        }
        //se for armazem
        else if ($this->tipoimovel_id == 4) {
            return $this->hasOne(Armazem::class);
        }
        //se for terreno para construção
        else if ($this->tipoimovel_id == 5) {
            return $this->hasOne(TerrenoConstrucao::class);
        }
        // se for terreno para outros fins
        else if ($this->tipoimovel_id == 6) {
            return $this->hasOne(TerrenoOutrosFins::class);
        }
    }     

我正在使用范围进行搜索:

这个范围我搜索所有拥有更多N卧室的房子,但我也必须搜索公寓

public function scopeProcuraNrQuartosMoradia($query,$nrQuartos){
    if ($nrQuartos != 0) $query ->join('moradias','imoveis.id', '=', 'moradias.imovel_id')
                                ->where( 'nrQuartos' , '>=' , $nrQuartos);      
   }

所以我创建了另一个在公寓表中搜索的范围及其错误的

public function scopeProcuraNrQuartosApartamento($query,$nrQuartos){
    if ($nrQuartos != 0) $query ->join('apartamentos','imoveis.id', '=', 'apartamentos.imovel_id')
                                ->where( 'nrQuartos' , '>=' , $nrQuartos);      
   }

控制器

 $imo = Imovel::procuraFinalidade($finalidade)->procuraTipo($tipo)->procuraNrQuartosMoradia($nrQuartos)->procuraNrQuartosApartamento($nrQuartos)->paginate(9);

有没有办法在一个范围内这样做,比如做两个连接来查看房屋和公寓的表格?

例如,在这种情况下,UNION会起作用吗?

0 个答案:

没有答案