drcj64241 2017-06-05 21:58
浏览 55
已采纳

DB :: raw不使用模型连接

I'm trying to get a count of model rows from a different database. I have both databases configured fine. My problem is that it doesn't seem to be using the same connection when attempting to perform raw queries.

Code:

class Lead extends Model
{
    protected $connection = 'infused2';
    public $timestamps = false;

    function campaignCount(Campaign $campaign)
    {
        $leads = $this->join('lead_history', 'leads.id', '=', 'lead_history.id_lead')->join('assignments', 'leads.id', '=', 'assignments.id_lead');

        if (!empty($campaign->lead_date_created_operand)) {
            if ($campaign->leadDateCreatedOperand->name == 'day age') {
                $leads->where(DB::raw("date_format(from_unixtime(lead_history.date_created), '%d-%m-%Y') = date_format(".strtotime($campaign->lead_date_created_value).", '%d-%m-%Y')"));
            }
            else if ($campaign->leadDateCreatedOperand->name == 'month age') {
                $leads->where(DB::raw("date_format(from_unixtime(lead_history.date_created), '%m-%Y') = date_format(".strtotime($campaign->lead_date_created_value).", '%m-%Y')"));
            }
        }

        if (!empty($campaign->lead_date_assigned_operand)) {
            if ($campaign->leadDateAssignedOperand->name == 'day age') {
                $leads->where(DB::raw("date_format(from_unixtime(assignments.date_assigned), '%d-%m-%Y') = date_format(".strtotime($campaign->lead_date_assigned_value).", '%d-%m-%Y')"));
            }
            else if ($campaign->leadDateAssignedOperand->name == 'month age') {
                $leads->where(DB::raw("date_format(from_unixtime(assignments.date_assigned), '%m-%Y') = date_format(".strtotime($campaign->lead_date_assigned_value).", '%m-%Y')"));
            }
        }

        return $leads->count();
    }
}

I am getting error Database [mysql] not configured. Why is this happening and how do I make the raw queries use the model connection?

  • 写回答

2条回答 默认 最新

  • duanleiming2014 2017-06-05 22:30
    关注

    Got it.

        $query = DB::connection($this->connection)->table($this->getTable());
    
        if (!empty($campaign->lead_date_created_operand)) {
            $query->join('lead_history', 'lead_history.id_lead', '=', 'leads.id');
    
            if ($campaign->leadDateCreatedOperand->name == 'day age') {
                $query->whereRaw("date_format(from_unixtime(lead_history.date_created), '%d-%m-%Y') = date_format(from_unixtime(".strtotime('-'.$campaign->lead_date_created_value)."), '%d-%m-%Y')");
            }
            else if ($campaign->leadDateCreatedOperand->name == 'month age') {
                $query->whereRaw("date_format(from_unixtime(lead_history.date_created), '%m-%Y') = date_format(from_unixtime(".strtotime('-'.$campaign->lead_date_created_value)."), '%m-%Y')");
            }
        }
    
        if (!empty($campaign->lead_date_assigned_operand)) {
            $query->join('assignments', 'assignments.id_lead', '=', 'leads.id');
    
            if ($campaign->leadDateAssignedOperand->name == 'day age') {
                $query->whereRaw("date_format(from_unixtime(assignments.date_assigned), '%d-%m-%Y') = date_format(from_unixtime(".strtotime('-'.$campaign->lead_date_assigned_value)."), '%d-%m-%Y')");
            }
            else if ($campaign->leadDateAssignedOperand->name == 'month age') {
                $query->whereRaw("date_format(from_unixtime(assignments.date_assigned), '%m-%Y') = date_format(from_unixtime(".strtotime('-'.$campaign->lead_date_assigned_value)."), '%m-%Y')");
            }
        }
    
        return $query->count();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!