Laravel将多个集合合并为一个查询

时间:2018-05-01 17:27:12

标签: laravel eloquent

我想知道这是否可行。我有3个型号。 用户 TenantPreferances PropertyAdverts

我试图找出是否可以这样查询。

查找所有租户,其首选项与当前登录的用户属性相匹配。

3个数据库就像这样

用户模型

 Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('userType');
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });

PropertyAdverts

Schema::create('property_adverts', function (Blueprint $table) {
            $table->increments('id');
            $table->string("photo");
            $table->string('address');
            $table->string('county');
            $table->string('town');
            $table->string('type');
            $table->string('rent');
            $table->string('date');
            $table->string('bedrooms');
            $table->string('bathrooms');
            $table->string('furnished');
            $table->longText('description');
            $table->integer('user_id'); //Landlord ID
            $table->timestamps();
        });

租客优惠

 Schema::create('tenant_preferances', function (Blueprint $table) {
        $table->increments('id');
        $table->string('county');
        $table->string('type');
        $table->string('rent');
        $table->string('bedrooms');
        $table->string('bathrooms');
        $table->boolean('status')->default('0');
        $table->integer('user_id'); //Tenant ID
        $table->timestamps();
    });

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。你需要深入研究relations。然后,您可以创建一个函数来定义模型上的关系:

function propertyAdverts() {
  return $this->hasMany(PropertyAdverts::class);
}

您可以使用$user->propertyAdverts从用户模型访问关系。如果你想加载它们,你可以这样做:

User::with('propertyAdverts')->find(3);

但请注意,Laravel默认不会定期加入。它首先提取所有用户,然后使用propertyAdverts语句使用单个查询提取所有in