我必须将这些查询转换为 Laravel 方式。
$tqry = "select app_process,end_time,((end_time-".time().")/86400)as remain_day from BYAPPS_apps_data where mem_id='$valu[mem_id]' limit 1";
$tresult = $_DB->query($tqry);
$tmp=$tresult->fetchRow();
if($tmp[app_process]){
$status=$app_process[$tmp[app_process]];
if($tmp[app_process]==7&&($tmp[end_time]&&$tmp[remain_day]<=0)) $type="Expired";
}else {
$tqry = "select app_process from BYAPPS_apps_order_data where mem_id='$valu[mem_id]' order by idx desc limit 1";
$tresult = $_DB->query($tqry);
$tmp=$tresult->fetchRow();
if($tmp[app_process]) $status=$ord_process[$tmp[app_process]];
else $status="Not Customer";
}
我通过这样的模型设置关系。
用户信息模型
public function order()
{
return $this->hasMany('App\AppsOrderData', 'mem_id');
}
public function apps()
{
return $this->hasMany('App\AppsData', 'mem_id');
}
AppsOrderData 模型(=> 使用“BYAPPS_apps_order_data”表)
public function userinfo()
{
return $this->belongsTo('App\UserInfo', 'mem_id');
}
AppsData 模型(=> 使用“BYAPPS_apps_data”表)
public function payments()
{
return $this->hasMany('App\AppsPaymentData','mem_id');
}
然后,我尝试转换 UserInfoController.php
中的原始查询,如下所示。
public function getUserInfoListData()
{
$userInfoListData = UserInfo::select('idx',
'mem_id',
'mem_nick',
'mem_name',
'cellno',
'ip',
'reg_date')
->with('order')
->with('apps');
$orderProcess = array('Cancel','Order', 'Confirm Order',
'Developing', 'App Uploaded', 'Service end',
'Service expired', '', '', 'Waiting');
$appsOrderData = AppsOrderData::select('app_process', 'mem_id', 'end_time');
return Datatables::of($userInfoListData)
->setRowId(function($userInfoListData) {
return $userInfoListData->idx;
})
->editColumn('type', function($eloquent) use ($appsOrderData, $orderProcess) {
if ($appsOrderData->app_process == 7 && $appsOrderData->end_time <= 0) {
return "Expired";
} else {
return "No Customer";
}
})
->editColumn('term', function($eloquent) {
return " (".$eloquent->launch_date." ~ ".now().")";
})
->orderColumn('reg_date', 'reg_date $1')
->make(true);
}
但是,它并没有像我预期的那样返回,所有 type
数据都只返回“No Customer”。
如何将此查询转换为 Laravel 方式?
我做错关系了吗?
最佳答案
我认为你在代码中犯了一些错误,
AppData 模型没有用户关系。
如果用
get()
方法获取数据,可以这样,$userInfoListData=用户信息::
select('idx','mem_id','mem_nick','mem_name','cellno','ip','reg_date') ->with('order') ->with('apps') ->get();
如需进一步引用,您可以使用: Get Specific Columns Using “With()” Function in Laravel Eloquent
我希望这能帮助您解决问题 - 谢谢!
关于php - 将 MYSQL 查询转换为 Laravel 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723959/