这是我的桌子=>桌子图片
//This is my controller
public function listUserStripeActionableRequests(Request $request) {
return $model = UserRequest::whereNull('deleted_at')
->with('oldPackage')
->get();
}
userRequest.php
public function oldPackage() {
return $this->hasOne(Package::class, 'id', 'old_package_id');
}
我需要根据表中的package_type获取数据,如果package_type == 1,那么我需要从Package :: class获取数据,如果package_type == 2,那么需要从AddOnsPackage :: class获取模型功能,例如:- $this->hasOne(AddOnsPackage::class, 'id', 'old_package_id');
如何使用单个查询来相应地获取数据?
你可以试试
class UserRequest extends Model
{
public function package()
{
return $this->hasOne(Package::class, 'id', 'old_package_id');
}
public function addon()
{
return $this->hasOne(AddonPackage::class, 'type', 'add_on_type');
}
public static function sorted()
{
return static::whereNull('deleted_at')
->get()
->map(function ($record) {
if ($record->package_type === 1) {
$record->load('package');
} elseif ($record->package_type === 2) {
$record->load('addon');
}
return $record;
});
}
}
然后在控制器中您可以执行
public function listUserStripeActionableRequests(Request $request)
{
return $model = UserRequest::sorted();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句