相关疑难解决方法(0)

Laravel:如何创建函数保存|更新之后或之前

我需要在save()或update()之后或之前生成一个函数来调用,但我不知道该怎么做.我想我需要来自save()update()的回调,但我不知道该怎么办.谢谢

save updates laravel

30
推荐指数
3
解决办法
5万
查看次数

我在哪里可以获得Laravel事件的完整列表(由核心库激发)?

我想知道Laravel核心库触发了哪些事件.我想获得完整的列表,例如laravel.querylaravel.done.

官方文档中列出四个事件,但我认为Laravel比这四个事件更多!

php laravel laravel-3

24
推荐指数
2
解决办法
9919
查看次数

在Laravel 4注册观察员的确切位置

当为模型观察者使用单独的类时,我应该在哪里注册观察者?文档说要打电话,User::observe(new UserObserver);但我不知道最好的地方在哪里.

https://laravel.com/docs/5.4/eloquent#observers

model observers laravel

12
推荐指数
1
解决办法
5256
查看次数

如何知道laravel模型值是否在保存回调时发生了变化

按照这个答案,我在Laravel中建模保存回调(类似于rails),如下所示:

class LessonPlan extends Eloquent {

   public function save(array $options = array())
   {
      // before save code 
      parent::save();
      // after save code
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,Page当我保存页面或更新现有页面时,我会调用save().我怎么知道这个操作中哪个是哪个?

我试过类似的东西

public function save(array $options = array())
{
    // before save code
    $oldLesson = clone $this;
    parent::save();

    ..
    if ($this->isLessonStatusChanged($oldLesson)) {
      ..
    }
}

private function isLessonStatusChanged($oldLesson) {
    return $this->status != $oldLesson->status;
}
Run Code Online (Sandbox Code Playgroud)

但这并不好......因为$ oldLesson已经有了$ lesson的新值

我最后做的只是重新编写网址,看看它是否是一个更新请求..但我已经在晚上睡觉时遇到了问题(我的回答并没有真正告诉我是否有任何值实际发生了变化.. b/c one可以提交更新表格,而无需实际更改任何内容)..有更清洁的方法吗?

php regex laravel laravel-4

11
推荐指数
1
解决办法
1万
查看次数

使用其他列值进行Eloquent更新

我想执行UPDATE使用滔滔不绝,将设置column_c的使用值值column_acolumn_b同桌.基本上,这样的事情:

User::where('id', '>', 0)
        ->update(['column_c' => $this->column_a + $this->column_b]);
Run Code Online (Sandbox Code Playgroud)

where $this->column_a$this->column_b 将是当前行的实际值.

MySQL等价物:

UPDATE `user` WHERE id > 0 SET column_c = column_a + column_b;
Run Code Online (Sandbox Code Playgroud)

注意:上面的代码只是展示这个想法的一个例子.这不是实际的实现(这将创建数据库冗余).

如何在Laravel 5.1中执行此类更新?我真的想避免一个foreach.

php laravel eloquent laravel-5

11
推荐指数
2
解决办法
7609
查看次数

Laravel 5.4 ON UPDATE CURRENT_TIMESTAMP,如何?

请帮助我了解如何在 Laravel 5.4 中执行此操作。不能谷歌这个。

CREATE TABLE t1 (
  dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

$table->dateTime('dt')
        ->default(DB::raw('CURRENT_TIMESTAMP'))
        ->onUpdate(DB::raw('CURRENT_TIMESTAMP'));
Run Code Online (Sandbox Code Playgroud)

问题是关于这部分:

ON UPDATE CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

解决了:

好吧,解决方案很简单:/

$table->dateTime('updated')
        ->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'))
Run Code Online (Sandbox Code Playgroud)

php mysql sql migration laravel

8
推荐指数
0
解决办法
5386
查看次数

标签 统计

laravel ×6

php ×4

eloquent ×1

laravel-3 ×1

laravel-4 ×1

laravel-5 ×1

migration ×1

model ×1

mysql ×1

observers ×1

regex ×1

save ×1

sql ×1

updates ×1