php - 将 MYSQL 查询转换为 Laravel 方式

标签 php mysql laravel

我必须将这些查询转换为 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/

相关文章:

php - 如何在 codeigniter 3 数据库中设置 session ?

php - Uncaught Error : Class 'PHPMailer' not found

php - 在php中的sql查询中从文本框传递值

mysql - 为什么这个 MySQL 查询是正确的?

php - Laravel 软删除帖子

javascript - 本地存储中出现损坏的 PDF 文件错误

php - 使用内置的 Laravel 5.2 身份验证并加载 SPA,然后为所有其他路由加载 Dingo API

php - 使用 PHP 连接到 MySql 数据库时,根据用户输入修改数据库配置是一个坏主意吗?

mysql - MySQL 将在什么执行级别使用 ORDER BY 索引?

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源