我正在建立一个房地产销售网站。房产可以是房屋,公寓,商店等....
我有这种关系:
模型://属性
class Imovel extends Model...
public function moradia(){
return $this->hasOne(Moradia::class);
}
public function apartamento(){
return $this->hasOne(Apartamento::class);
}
//公寓
public function imovel(){
return $this->belongsTo(Imovel::class);
}
// House
public function imovel(){
return $this->belongsTo(Imovel::class);
}
迁移:
//属性
Schema::create('imoveis', function (Blueprint $table) {
$table->increments('id');
$table->integer('tipoImovel_id');
$table->string('finalidade',20);
$table->string('titulo',100);
$table->date('data')->nullable();
$table->integer('concelho_id');
$table->string('freguesia',50);
$table->string('rua',150);
$table->decimal('long', 10, 7)->nullable();
$table->decimal('lat', 10, 7)->nullable();
$table->boolean('destaque');
$table->boolean('estado')->default(true);
$table->string('descricao',500);
$table->string('preco',40);
$table->integer('empresa_id')->default(1);
$table->timestamps();
//房子
Schema::create('moradias', function (Blueprint $table) {
$table->integer('imovel_id');
$table->integer('nrPisosConstrucao');
$table->integer('nrWcs');
$table->integer('areaConstrucao');
$table->integer('areaTerreno');
$table->smallInteger('anoConstrucao');
$table->timestamps();
//公寓
Schema::create('apartamentos', function (Blueprint $table) {
$table->integer('imovel_id');
$table->integer('nrQuartos');
$table->integer('nrWcs');
$table->integer('nrPisosEdifio');
$table->integer('areasAcessorias');
$table->integer('areasHabitacionais');
$table->smallInteger('anoConstrucao');
$table->timestamps();
我的问题是:我如何知道该物业是房屋,公寓还是商店......?
我有所有属性的列表,要编辑我怎么做?我怎么知道它是什么类型的财产?
由于
答案 0 :(得分:1)
检查房屋或公寓表中是否有相关记录。因此,例如,如果在房屋表中没有相关记录,则$impovel->moradia()
将为空。
前:
$imovel = App\Imovel::find($id);
if(!is_null($imovel->moradia())) {
// Property is a house
}
修改强>
我认为你最好在属性表中使用列 - > property_type
。这可以采取价值观,房子,公寓' shop'等。
这将有助于轻松选择房产/公寓房产。
此外,您可以使用一种关系方法:
public function attributes(){
if($this->type == 'house') {
return $this->hasOne(Moradia::class);
}
if($this->type == 'apartments') {
return $this->hasOne(Apartamento::class);
}
}
你可以这样做:$imovel->attributes()
,这将给出相应的属性属性。