如何在Laravel 5中执行简单查询? DB :: getQueryLog给出数组

时间:2016-06-13 12:33:38

标签: php mysql codeigniter laravel

我是Laravel的新手,我想在Laravel 5中执行简单查询。我使用下面的函数插入数据

    public function store12($inputs)
    {
        $this->name = $inputs['name'];
        $this->email = $inputs['email'];
        $this->text = $inputs['message'];       
        $this->save();
         echo "<pre>"; print_r(dd(DB::getQueryLog()));
        //echo DB::table('contacts')->toSql();
        die;

    }

并使用: - dd(DB :: getQueryLog())获取行查询,这将在下面给出原始查询: -

array:1
  0 => array:3
    "query" => "insert into `contacts` (`name`, `email`, `text`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?)"
    "bindings" => array:5
      0 => "shahjad"
      1 => "shahjad.ahmadtimt@gmail.com"
      2 => "xsxdxsda"
      3 => "2016-06-13 12:17:43"
      4 => "2016-06-13 12:17:43"
    ]
    "time" => 33.0
  ]
]

其实我想这样查询: -

insert into `contacts` (`name`, `email`, `text`, `updated_at`, `created_at`) values ('shahjad', 'shahjad.ahmadtimt@gmail.com', 'xsxdxsda', '2016-06-13 12:17:43', '2016-06-13 12:17:43')"

这样我就可以直接将这个查询直接执行到phpmyadmin中,否则我必须在查询中提到这个耗时的值。

在Codeigniter中,当我们使用last_query方法时,它会显示一个没有数组的简单查询。我想和codeigniter一样。是否有可能

2 个答案:

答案 0 :(得分:0)

使用 - &gt; tosql()

为例

  dd(DB::select('users')->where('smthing',1)->get()->tosql());

修改

 $test = DB::table('users')->insert(
    ['name' => $inputs['name'], 'email' => $inputs['email'], 'text' => $inputs['message']]
  )->tosql();

或者你可以这样做

\DB::listen(function($sql) {
    var_dump($sql);
});

你可以使用这个包,它会告诉你每个sql查询已经完成 laravel-debugbar

答案 1 :(得分:0)

您是否尝试过原始方法

$results = DB::select( DB::raw("
                               insert into `contacts` 
                               (`name`, `email`, `text`, `updated_at`, `created_at`) 
                              values
                              ('shahjad', 'shahjad.ahmadtimt@gmail.com', 'xsxdxsda', '2016-06-13 12:17:43', '2016-06-13 12:17:43')
                             " ) );