diff --git a/config/activitylog.php b/config/activitylog.php
index a9c32bf0..3b664ae0 100644
--- a/config/activitylog.php
+++ b/config/activitylog.php
@@ -42,4 +42,10 @@
* used by the Activity model shipped with this package.
*/
'table_name' => 'activity_log',
+
+ /*
+ * This is the database connection that will be used by the migration and
+ * the Activity model shipped with this package.
+ */
+ 'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION', 'mysql'),
];
diff --git a/migrations/create_activity_log_table.php.stub b/migrations/create_activity_log_table.php.stub
index 4163d571..2251f97e 100644
--- a/migrations/create_activity_log_table.php.stub
+++ b/migrations/create_activity_log_table.php.stub
@@ -11,7 +11,7 @@ class CreateActivityLogTable extends Migration
*/
public function up()
{
- Schema::create(config('activitylog.table_name'), function (Blueprint $table) {
+ Schema::connection(config('activitylog.database_connection'))->create(config('activitylog.table_name'), function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('log_name')->nullable();
$table->text('description');
@@ -31,6 +31,6 @@ class CreateActivityLogTable extends Migration
*/
public function down()
{
- Schema::dropIfExists(config('activitylog.table_name'));
+ Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name'));
}
}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index bcdc2823..7a65b9f4 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -19,7 +19,4 @@
src/
-
-
-
diff --git a/src/Models/Activity.php b/src/Models/Activity.php
index 5f1d87f4..8e824c36 100644
--- a/src/Models/Activity.php
+++ b/src/Models/Activity.php
@@ -19,6 +19,10 @@ class Activity extends Model implements ActivityContract
public function __construct(array $attributes = [])
{
+ if (! isset($this->connection)) {
+ $this->setConnection(config('activitylog.database_connection'));
+ }
+
if (! isset($this->table)) {
$this->setTable(config('activitylog.table_name'));
}
diff --git a/tests/CustomDatabaseConnectionActivityModelTest.php b/tests/CustomDatabaseConnectionActivityModelTest.php
new file mode 100644
index 00000000..dca0b363
--- /dev/null
+++ b/tests/CustomDatabaseConnectionActivityModelTest.php
@@ -0,0 +1,37 @@
+assertEquals($model->getConnectionName(), config('activitylog.database_connection'));
+ }
+
+ /** @test */
+ public function it_uses_a_custom_database_connection()
+ {
+ $model = new Activity();
+
+ $model->setConnection('custom_sqlite');
+
+ $this->assertNotEquals($model->getConnectionName(), config('activitylog.database_connection'));
+ $this->assertEquals($model->getConnectionName(), 'custom_sqlite');
+ }
+
+ /** @test */
+ public function it_uses_the_database_connection_from_model()
+ {
+ $model = new CustomDatabaseConnectionOnActivityModel();
+
+ $this->assertNotEquals($model->getConnectionName(), config('activitylog.database_connection'));
+ $this->assertEquals($model->getConnectionName(), 'custom_connection_name');
+ }
+}
diff --git a/tests/Models/CustomDatabaseConnectionOnActivityModel.php b/tests/Models/CustomDatabaseConnectionOnActivityModel.php
new file mode 100644
index 00000000..d164190b
--- /dev/null
+++ b/tests/Models/CustomDatabaseConnectionOnActivityModel.php
@@ -0,0 +1,10 @@
+set('activitylog.database_connection', 'sqlite');
+ $app['config']->set('database.default', 'sqlite');
+ $app['config']->set('database.connections.sqlite', [
+ 'driver' => 'sqlite',
+ 'database' => ':memory:',
+ ]);
+
$app['config']->set('auth.providers.users.model', User::class);
$app['config']->set('app.key', 'base64:'.base64_encode(
Encrypter::generateKey($app['config']['app.cipher'])