PHP code example of michaeljmeadows / has-histories
1. Go to this page and download the library: Download michaeljmeadows/has-histories library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
michaeljmeadows / has-histories example snippets
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
private array $tables = [
'users',
'user_histories',
];
public function up(): void
{
foreach ($this->tables as $tableName) {
Schema::create($tableName, function (Blueprint $table) use ($tableName) {
$isHistoriesTable = str($tableName)->contains('histories');
$table->id();
if ($isHistoriesTable) {
$table->foreignId('user_id');
}
$table->string('name');
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->foreignId('current_team_id')->nullable();
$table->string('profile_photo_path', 2048)->nullable();
$table->timestamps();
if (! $isHistoriesTable) {
$table->unique('email');
}
});
}
}
public function down(): void
{
foreach ($this->tables as $tableName) {
Schema::dropIfExists($tableName);
}
}
};
namespace App\Models;
use michaeljmeadows\Traits\HasHistories;
use Illuminate\Database\Eloquent\Model;
class NewModel extends Model
{
use HasHistories;
namespace App\Models;
use michaeljmeadows\Traits\HasHistories;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasHistories;
protected array $ignoredFields = [
'email_verified_at',
];
namespace App\Models;
use michaeljmeadows\Traits\HasHistories;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasHistories;
protected string $historyTable = 'user_logging'; // Instead of 'user_histories'.
namespace App\Models;
use michaeljmeadows\Traits\HasHistories;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasHistories;
protected string $historiesModelIdReference = 'user_model_id'; // Instead of 'user_id'.
namespace App\Observers;
use App\Models\NewModel;
use Illuminate\Support\Facades\Auth;
class NewModelObserver
{
public function creating(NewModel $newModel): void
{
$newModel->saveHistory('sqlite');
}