2015-05-28 15 views
13

Tôi cố gắng tạo một liên kết đa hình, những gì phổ biến trong Rails nhưng tiếc là không có trong Yii2. Là một phần của quá trình triển khai, tôi cần phải xác định mối quan hệ:Làm thế nào để sử dụng hằng số trong điều kiện ON trong Yii2 mối quan hệ của chúng tôi

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), 
     ['imageable_id' => 'id', 'imageable_type' => 'Person']); 
} 

Nhưng điều này không hoạt động, vì 'Người' được coi là thuộc tính của mô hình hiện tại, nhưng đó là một hằng số (tên lớp cho liên kết đa hình).

Nếu tôi cố gắng sử dụng 'vàWhere', nó sẽ thêm điều kiện của khóa học trong mệnh đề WHERE thay vì mệnh đề ON, khiến chỉ ghi lại với hình ảnh hiện có được trả lại.

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id'])-> 
     andWhere(['imageable_type' => 'Ingredient']); 
} 

Làm cách nào để xác định mối quan hệ? Không có phương thức andOn.

Trả lời

37

Trong trường hợp này bạn có thể sửa đổi ON điều kiện với andOnCondition phương pháp: docs

public function getImages() 
{ 
    return $this->hasMany(RecipeImage::className(), ['imageable_id' => 'id']) 
     ->andOnCondition(['imageable_type' => 'Person']); 
} 

chính thức:

+1

nhờ các liên kết! – iGbanam

Các vấn đề liên quan