isDirty()在Laravel中意味着什么?

时间:2015-03-03 15:49:49

标签: php laravel

首先,我不太熟悉Laravel(或者说“脏”这个词)。 我偶然发现了这行代码 -

if ($this->isDirty('status')) 
{
            if (Notification::has('website-status-'.strtolower($this->status)))
            {
                Notification::set($this->account, 'website-status-'.strtolower($this->status), $this->emailAttributes())
                            ->email();
            }
}

我无法理解这究竟意味着什么。我试图在互联网上找到,但Laravel网站只是说 - “确定一个给定的属性是否脏”,这实际上没有帮助...

4 个答案:

答案 0 :(得分:19)

如果您想知道模型是否已经从数据库中查询过,或者根本没有保存,那么您可以使用->isDirty()函数。

答案 1 :(得分:3)

isDirty方法确定自加载模型以来是否已更改任何属性。您可以传递一个特定的属性名称来确定特定的属性是否肮脏。

    $user = User::create([
        'first_name' => 'Amir',
        'last_name' => 'Kaftari',
        'title' => 'Developer',
    ]);

    $user->title = 'Jafar';
    $user->isDirty(); // true
    $user->isDirty('title'); // true
    $user->isDirty('first_name'); // false

答案 2 :(得分:2)

作为对已接受答案的支持:

from tag_util import backoff_tagger

答案 3 :(得分:0)

Eloquent提供了isDirtyisCleanwasChanged方法来检查模型的内部状态,并确定其属性与最初加载时相比如何变化。

您可以在官方文档中找到这三种方法的完整说明和示例: https://laravel.com/docs/8.x/eloquent#examining-attribute-changes