我是Laravel的Fresher,我想在Laravel5中执行简单的查询。我正在使用以下函数插入数据
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它会显示一个没有数组的简单查询。我想像编码点火器一样。是否有可能
使用 ->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
你试过原始方法吗
$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')
" ) );
这段代码对我有用,请尝试
DB::enableQueryLog();
然后
run your query
然后
foreach (DB::getQueryLog() as $q) {
$queryStr = Str::replaceArray('?', $q['bindings'], $q['query']);
echo $queryStr . ";n";
}