这篇文章是为了通知并提出问题。 大家好, 我正在开发一个能够充分利用触发器的大型系统。我们目前正在使用phpmyadmin使用php 7在Laravel 5.2上运行服务器端。在Laravel中,关于如何通过迁移使用触发器并没有太多可靠的文档,而且从我发现的大多数情况下你必须“生成”它。
以下是我所知道的关于如何在迁移中编写触发器的简单示例:
class CreateAccountTriggerTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
DB::unprepared('
CREATE TRIGGER `my_trigger_name` AFTER INSERT ON `table_the_change_happened`
FOR EACH ROW
BEGIN
INSERT INTO `this_table`
(field1,field2,field3)
VALUES
('value1','value2','value3')
END
');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down() {
DB::unprepared('DROP TRIGGER IF EXISTS `my_trigger_name`');
}
}
问题: 有没有人知道在laravel的查询构建器中使用变量的干净方法?
方法DB :: unrepared()不允许您将绑定项附加到它。在Eloquent中尝试它几乎是不可能的,因为我没有找到针对此问题的可靠文档。如果有人能详细说明,我会非常感激。提前谢谢
更新 这里的每个请求都是我在laravel的查询构建器中使用变量的意思的一个例子:
$stuff = bcrypt($random_numbers);
DB::unprepared('
CREATE TRIGGER `my_trigger_name` AFTER INSERT ON `table_the_change_happened`
FOR EACH ROW
BEGIN
INSERT INTO `this_table`
(field1,field2,field3)
VALUES
('value1','value2','value3',"$stuff")
END
');
答案 0 :(得分:2)
除非我误解了您的问题,否则我认为您正在寻找statement()
方法,而不是unprepared()
方法。 statement()
方法接受查询和该查询的参数绑定数组。
以下示例。值列表中的?
是查询参数。绑定到该参数的值将添加到第二个参数中传递给statement()
方法的数组中。
$stuff = bcrypt($random_numbers);
DB::statement('
CREATE TRIGGER `my_trigger_name` AFTER INSERT ON `table_the_change_happened`
FOR EACH ROW
BEGIN
INSERT INTO `this_table`
(field1,field2,field3)
VALUES
('value1','value2','value3',?)
END
', [$stuff]);