{"id":40,"date":"2026-09-28T20:01:03","date_gmt":"2026-09-28T17:01:03","guid":{"rendered":"https:\/\/localhost\/tatwerat-wp\/laravel-eloquent-activity-log\/"},"modified":"2026-09-28T20:01:03","modified_gmt":"2026-09-28T17:01:03","slug":"laravel-eloquent-activity-log","status":"publish","type":"post","link":"https:\/\/www.tatwerat.com\/ar\/laravel-eloquent-activity-log\/","title":{"rendered":"\u062a\u0633\u062c\u064a\u0644 \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0648\u0627\u0644\u062a\u0639\u062f\u064a\u0644 \u0648\u0627\u0644\u062d\u0630\u0641 \u0641\u064a Laravel"},"content":{"rendered":"<p>\u064a\u0633\u0627\u0639\u062f\u0643 \u0633\u062c\u0644 \u0627\u0644\u0646\u0634\u0627\u0637 \u0639\u0644\u0649 \u0645\u0639\u0631\u0641\u0629 \u0645\u0646 \u0639\u062f\u0651\u0644 \u0627\u0644\u0633\u062c\u0644 \u0648\u0645\u062a\u0649 \u062d\u062f\u062b \u0630\u0644\u0643 \u0648\u0646\u0648\u0639 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062a\u064a \u062a\u0645\u062a. \u062a\u0648\u0641\u0631 \u0623\u062d\u062f\u0627\u062b Eloquent \u0645\u0643\u0627\u0646\u064b\u0627 \u0645\u0631\u0643\u0632\u064a\u064b\u0627 \u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0648\u0627\u0644\u062a\u0639\u062f\u064a\u0644 \u0648\u0627\u0644\u062d\u0630\u0641\u060c \u0628\u062f\u0644 \u062a\u0643\u0631\u0627\u0631 \u0646\u0641\u0633 \u0627\u0644\u0645\u0646\u0637\u0642 \u0641\u064a \u0643\u0644 Controller.<\/p>\n<h2>\u062a\u0635\u0645\u064a\u0645 \u062c\u062f\u0648\u0644 \u0627\u0644\u0633\u062c\u0644<\/h2>\n<p>\u0623\u0646\u0634\u0626 \u062c\u062f\u0648\u0644 <code>activity_logs<\/code> \u0628\u062d\u0642\u0648\u0644 \u0644\u0646\u0648\u0639 \u0627\u0644\u0639\u0645\u0644\u064a\u0629\u060c \u0648\u0627\u0633\u0645 \u0627\u0644\u0645\u0648\u062f\u064a\u0644\u060c \u0648\u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0633\u062c\u0644\u060c \u0648\u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0628\u0635\u064a\u063a\u0629 JSON\u060c \u0648\u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0639 \u0627\u0644\u0633\u0645\u0627\u062d \u0628\u0623\u0646 \u064a\u0643\u0648\u0646 \u0641\u0627\u0631\u063a\u064b\u0627\u060c \u0648\u0627\u0644\u062a\u0648\u0642\u064a\u062a. \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0641\u0627\u0631\u063a\u0629 \u0645\u0641\u064a\u062f\u0629 \u0644\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0622\u0644\u064a\u0629. \u0644\u0627 \u062a\u0637\u0628\u0642 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0646\u0634\u0627\u0637 \u0639\u0644\u0649 \u0645\u0648\u062f\u064a\u0644 \u0627\u0644\u0633\u062c\u0644 \u0646\u0641\u0633\u0647 \u062d\u062a\u0649 \u0644\u0627 \u062a\u062f\u062e\u0644 \u0641\u064a \u062d\u0644\u0642\u0629 \u0645\u062a\u0643\u0631\u0631\u0629.<\/p>\n<h2>\u0631\u0628\u0637 \u0623\u062d\u062f\u0627\u062b \u0627\u0644\u0645\u0648\u062f\u064a\u0644<\/h2>\n<p>\u0627\u0633\u062a\u062e\u062f\u0645 Observer \u0623\u0648 Trait \u0645\u0634\u062a\u0631\u0643\u064b\u0627 \u0644\u0644\u0645\u0648\u062f\u064a\u0644\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0631\u064a\u062f \u0645\u0631\u0627\u0642\u0628\u062a\u0647\u0627. \u062a\u0639\u0645\u0644 \u0623\u062d\u062f\u0627\u062b <code>created<\/code> \u0648<code>updated<\/code> \u0648<code>deleted<\/code> \u0628\u0639\u062f \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0639\u0645\u0644\u064a\u0629\u060c \u0648\u0644\u0630\u0644\u0643 \u064a\u0635\u0628\u062d \u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0633\u062c\u0644 \u0645\u062a\u0627\u062d\u064b\u0627 \u0639\u0646\u062f \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0625\u0646\u0634\u0627\u0621.<\/p>\n<pre><code>protected static function booted(): void\n{\n    static::created(fn (self $model) =&gt; ActivityLog::create([\n        'action' =&gt; 'created',\n        'model_type' =&gt; $model::class,\n        'model_id' =&gt; $model-&gt;getKey(),\n        'performed_by' =&gt; auth()-&gt;id(),\n    ]));\n\n    static::updated(fn (self $model) =&gt; ActivityLog::create([\n        'action' =&gt; 'updated',\n        'model_type' =&gt; $model::class,\n        'model_id' =&gt; $model-&gt;getKey(),\n        'changes' =&gt; $model-&gt;getChanges(),\n        'performed_by' =&gt; auth()-&gt;id(),\n    ]));\n}<\/code><\/pre>\n<p>\u0623\u0636\u0641 \u062d\u062f\u062b <code>deleted<\/code> \u0628\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0646\u0641\u0633\u0647\u0627. \u0627\u0636\u0628\u0637 cast \u0644\u062d\u0642\u0644 <code>changes<\/code> \u0641\u064a \u0645\u0648\u062f\u064a\u0644 \u0627\u0644\u0633\u062c\u0644\u060c \u0648\u062d\u062f\u062f \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u062d\u0641\u0638\u0647\u0627 \u0639\u0628\u0631 <code>create()<\/code>. \u0644\u0627 \u062a\u0633\u062c\u0644 \u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0645\u0631\u0648\u0631 \u0623\u0648 \u0627\u0644\u0631\u0645\u0648\u0632 \u0627\u0644\u0633\u0631\u064a\u0629\u061b \u0627\u062e\u062a\u0631 \u0627\u0644\u062d\u0642\u0648\u0644 \u0627\u0644\u062a\u064a \u064a\u062d\u062a\u0627\u062c\u0647\u0627 \u0633\u062c\u0644 \u0627\u0644\u0645\u0631\u0627\u062c\u0639\u0629 \u0641\u0642\u0637.<\/p>\n<p><strong>\u0627\u0646\u062a\u0628\u0647:<\/strong> \u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062a\u0639\u062f\u064a\u0644 \u0648\u0627\u0644\u062d\u0630\u0641 \u0627\u0644\u062c\u0645\u0627\u0639\u064a\u0629 \u0639\u0628\u0631 \u0627\u0633\u062a\u0639\u0644\u0627\u0645 Eloquent \u0644\u0627 \u062a\u0637\u0644\u0642 \u0623\u062d\u062f\u0627\u062b\u064b\u0627 \u0644\u0643\u0644 \u0645\u0648\u062f\u064a\u0644\u060c \u0644\u0623\u0646 \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0644\u0627 \u062a\u064f\u062d\u0645\u0651\u0644 \u0628\u0634\u0643\u0644 \u0645\u0646\u0641\u0635\u0644. \u0625\u0630\u0627 \u0643\u0627\u0646 \u062a\u0633\u062c\u064a\u0644 \u0643\u0644 \u0633\u062c\u0644 \u0634\u0631\u0637\u064b\u0627 \u0623\u0633\u0627\u0633\u064a\u064b\u0627\u060c \u0646\u0641\u0651\u0630 \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0639\u0644\u0649 \u0627\u0644\u0645\u0648\u062f\u064a\u0644\u0627\u062a \u0646\u0641\u0633\u0647\u0627. \u064a\u0634\u0631\u062d <a href=\"https:\/\/laravel.com\/docs\/11.x\/eloquent#events\" target=\"_blank\" rel=\"noopener noreferrer\">\u062a\u0648\u062b\u064a\u0642 \u0623\u062d\u062f\u0627\u062b Eloquent<\/a> \u062f\u0648\u0631\u0629 \u062d\u064a\u0627\u0629 \u0627\u0644\u0623\u062d\u062f\u0627\u062b.<\/p>\n<p><strong>\u0627\u0644\u0645\u0635\u062f\u0631:<\/strong> <a href=\"https:\/\/medium.com\/@abdo.host\/php-laravel-eloquent-on-create-update-and-delete-save-log-activity-3949411fbe1d\" target=\"_blank\" rel=\"noopener noreferrer\">\u0645\u0642\u0627\u0644 Abdo Host \u0627\u0644\u0623\u0635\u0644\u064a \u0639\u0644\u0649 Medium<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0633\u062a\u062e\u062f\u0645 \u0623\u062d\u062f\u0627\u062b Eloquent \u0644\u0625\u0646\u0634\u0627\u0621 \u0633\u062c\u0644 \u064a\u0648\u0636\u062d \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0648\u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0648\u0627\u0644\u0645\u0648\u062f\u064a\u0644 \u0648\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0645\u0633\u0624\u0648\u0644 \u0639\u0646\u0647\u0627.<\/p>\n","protected":false},"author":0,"featured_media":41,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-40","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":0,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/media\/41"}],"wp:attachment":[{"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tatwerat.com\/ar\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}