访问 laravel 5 中的嵌套关​​系

accessing nested relationship in laravel 5

我有如下 3 个模型:

Date
Property
PropertyDetail

这是我按顺序编写的表的迁移 日期:

 public function up()
{
    Schema::create('dates', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->dateTime('date');
        $table->timestamps();
    });
}

属性 :

 public function up()
{
    Schema::create('properties', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('type');
        $table->text('title');
        $table->integer('base_capacity');
        $table->timestamps();
    });

和属性详情:

 public function up()
{
    Schema::create('property_details', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('property_id');
        $table->string('state');
        $table->string('city');
        $table->timestamps();
    });
}

我试图从迁移中删除不必要的字段以保持其清洁所以这是我在日期和属性之间的 2 个关系 日期模型:

 public function properties() {
    return $this->belongsToMany(Property::class);
 }

和属性型号:

 public function dates(){
    return $this->belongsToMany(Date::class);
}
 public function features(){
    return $this->hasMany(Feature::class);
}

好的,现在终于在我的控制器中我想这样做了:

 $search = Date::with('properties')
        ->where('date',$someday)->get()


     ->and some how here i want to select the city from the property detail table
;

所以这是我的问题,现在我可以轻松访问属性并显示他们的名称但是从这个关系我如何访问功能关系和 select 从那里的城市我应该使用连接或其他东西我希望我足够清楚我想做什么

你可以这样做:

属性 型号:

public function details(){
    return $this->belongsToMany(Details::class,'property_details','id','property_id');
}

日期模型中:

 public function properties() {
     return $this->belongsToMany(Property::class);
 }

 public function propertiesDetails() {
     return $this->properties()->with('details');
 }

并且在您的 控制器中 您可以通过以下方式获取属性的详细信息:

 $search = Date::with('propertiesDetails')
    ->where('date',$someday)->get();

现在您可以访问属性的详细信息。

希望对您有所帮助。