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

sha*_*y.k 13 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

小智 24

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

  • 您只是复制/粘贴了“ ka_lins”评论,几乎是逐字逐句地表达了自己的观点吗? (6认同)
  • @Adam,他不必这样做,[阅读本](https://meta.stackoverflow.com/a/288849/5581565) (2认同)

Ami*_*ari 7

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
Run Code Online (Sandbox Code Playgroud)


kap*_*tan 6

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

$model = Model::find(1);

$model->first_column = $request->first_value;
$model->second_column = $request->second_value;
$model->third_column = $request->third_value;

if($model->isDirty()){
// the model has been edited, else codes here will not be executed
}

$model->save();
Run Code Online (Sandbox Code Playgroud)


Mos*_*ris 6

Eloquent 提供了isDirtyisCleanwasChanged方法来检查模型的内部状态并确定其属性从最初加载时发生的变化。

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

  • 这是指向官方文档的唯一答案。必须选择作为接受的答案。 (2认同)