2017-03-31 19 views
0

私は不動産販売サイトを行っています。Laravel - 属性がrelacionalテーブルに存在するかどうかを知る方法

私はアパートや家のように検索する必要がある各テーブルを知る方法、寝室の属性を持っていないショップのようなプロパティを持っています。 私はスコープを使用していますが、プロパティの場所とタイプに問題はありません。

私の財産モデル

public function atributos(){ 
     //se for moradia 
     if ($this->tipoimovel_id == 1) { 
      return $this->hasOne(Moradia::class); 
     } 
     //se for apartamento 
     else if ($this->tipoimovel_id == 2) {    
      return $this->hasOne(Apartamento::class); 
     } 
     //se for loja 
     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); 
     } 
    }  

倉庫は、寝室の数

Schema::create('armazens', function (Blueprint $table) { 
    $table->integer('imovel_id');   
    $table->integer('areaAcessoria'); 
    $table->integer('areaTotal'); 
    $table->smallInteger('anoConstrucao'); 
    $table->timestamps(); 
}); 

家は寝室

public function scopeProcuraNrQuartos($query,$nrQuartos){ 
    if ($nrQuartos) $query->where($this->atributos()->nrQuartos , '>=' , $nrQuartos); 
} 
の数で検索する

Schema::create('moradias', function (Blueprint $table) { 
    $table->integer('imovel_id'); 
    $table->integer('nrPisosConstrucao'); 
    $table->integer('nrQuartos'); 
    $table->integer('nrWcs'); 
    $table->integer('areaConstrucao'); 
    $table->integer('areaTerreno'); 
    $table->smallInteger('anoConstrucao'); 
    $table->timestamps(); 
}); 

マイスコープを持って持っていけません

私は間違っていることを知っていますが、その属性がテーブルに存在するかどうかを知るための検証がいくつか存在しますか? ありがとう

+0

私はあなたの問題を理解していますが、私はあなたと思うant https://laravel.com/api/5.4/Illuminate/Database/Query/Builder.html#method_whereExists – Bebras

答えて

0

私はあなたが正しくなっている場合、属性(列)がデータベースに存在するかどうかを確認する必要がありますか?

もしそうなら、ここにあなたがそれを行う方法です。

Schema::hasColumn($model->getTable(), $column); 

だからあなたの場合にだけ、もちろん

のモデルと列の名前を持つ

if ($nrQuartos) 

の代わりに、このチェックを入れます

当初の投稿:https://laracasts.com/discuss/channels/eloquent/test-attributescolumns-existence?page=1

関連する問題