【发布时间】:2017-01-03 18:37:33
【问题描述】:
这篇文章是为了通知和提问。 大家好, 我正在开发一个可以很好地使用触发器的大型系统。我们目前使用 phpmyadmin 在 Laravel 5.2 和 php 7 上运行服务器端。在 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::unprepared() 不允许您将绑定的项目附加到它。在 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
');
【问题讨论】:
-
你能举例说明“在 laravel 的查询构建器中使用变量”是什么意思吗?
-
@patricus 确定!请查看更新的编辑
-
这是 Laravel 的
Model Events拥有的应用程序之一。当您只需将模型附加到table_the_change_happened然后在public function boot(){ parent::boot(); });中添加逻辑以在parent::boot()之后进行插入时,就不需要触发器来执行此操作 -
如果您要跨多个表进行超过 50-80 个不同的插入,那么在流程方面真的会很有效吗?可以理解,我的问题中绘制的图像是一个简单的用例,但是在实际应用程序中,使用触发器(帐户设置)更有效。据我了解,处理这样的过程通常被视为使用触发器进行大型初始记录设置的好习惯。尽管这是一个完全不同的讨论。
标签: database laravel laravel-5 triggers laravel-migrations