我正在尝试从 Laravel 3 迁移到 Laravel 4
在 Laravel 3 中,我曾经像这样调用过程,一切正常。
public function get_gen_dist($skip = 0, $take = 0) {
$countries = Country::skip($skip)->take($take)->get();
foreach ($countries as $country) {
DB::query('CALL dist_proc(' . $country->id . ');');
}
}
在 Laravel 4 中,我将“DB::query”更改为“DB::raw”,没有错误,并且没有调用过程(至少没有执行过程),带有“DB::raw”的 var_dump'ed 结果看起来
object(Illuminate\Database\Query\Expression)[269]
protected 'value' => string 'CALL dist_proc(107)' (length=19)
也试过:
...
foreach ($countries as $country) {
$country_id = $country->id;
$db = DB::connection()->getPdo();
$stmt = $db->prepare("CALL dist_proc(?);");
$stmt->bindValue(1, $country_id, PDO::PARAM_INT);
$stmt->execute();
}
但是在第二个循环调用中我得到
ErrorException
Packets out of order. Expected 1 received 5. Packet size=10
试图“$stmt->closeCursor();” 在“$stmt->execute();”之后,但现在成功了。
没有循环或者如果循环只运行一次,程序就会成功执行。
如何在循环中调用过程?
谢谢