小编Álv*_*ães的帖子

如何使用 Laravel 为每个模型实例注册一个默认的观察者

Laravel 5.1

我正在尝试为每个扩展我的 AbstractModel 的模型(正在扩展 Illuminate\Database\Eloquent\Model)注册一个模型观察者。

问题是我的 GenericModelObserver 无法侦听由继承 AbstractModel 的模型触发的事件。

让我展示我到目前为止所做的事情。

创建了一个服务提供者并将其放在 config/app.php 中提供者数组的最后一个位置

<?php

// app/Providers/ObserverServiceProvider.php

namespace App\Providers;

use App\Models\Quotation;
use App\Models\AbstractModel;
use App\Observers\QuotationObserver;
use App\Observers\GenericModelObserver;
use Illuminate\Support\ServiceProvider;

class ObserverServiceProvider extends ServiceProvider
{

    public function boot()
    {
        AbstractModel::observe(GenericModelObserver::class);
        Quotation::observe(QuotationObserver::class);
    }

    public function register()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有我简单的 GenericModelObserver

<?php

// app/Observers/GenericModelObserver.php

namespace App\Observers;

use App\Models\AbstractModel;

class GenericModelObserver
{
    public function saving(AbstractModel $model)
    {
        return $model->valid();
    }
}
Run Code Online (Sandbox Code Playgroud)

抽象模型

<?php

// app/Models/AbstractModel.php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class AbstractModel extends …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5.1

6
推荐指数
3
解决办法
7117
查看次数

如何使用 Eloquent 模型设置具有相同值的多个键

我想用NULL.

我只想使用密钥来做到这一点,如下所示:

$model->exampleFiller($myKeysArray, null)->save();
Run Code Online (Sandbox Code Playgroud)

我目前正在使用这个:

$model->fill([
    'key1' => null,
    'key2' => null,
]);
Run Code Online (Sandbox Code Playgroud)

我正在寻找更好的方法,你有吗?

ps:这不是经常使用的东西,所以我不想扩展Eloquent Model。我只需要一个巧妙的方法来设置它一次。

php laravel

4
推荐指数
1
解决办法
644
查看次数

标签 统计

laravel ×2

php ×2

laravel-5.1 ×1