В настоящее время я ищу фреймворк для поддержки моего нового фреймворка. Laravel, кажется, мой лучший выбор.
Я имею в виду очень специфическую структуру. Мой проект будет иметь базовый дизайн с общими моделями, представлениями и контроллерами, а также некоторые подпроекты с конкретными представлениями. Цель состоит в том, чтобы предоставить платформу для владельцев того же бизнеса, где мы предоставляем уникальный сайт. Во многих случаях меняется только дизайн, а структура и компоненты остаются неизменными. Моя идея состояла в том, чтобы создать поддерживаемую структуру на laravel, из которой каждый сайт извлекает свои модели, контроллеры и представления, и, если есть особая необходимость, можно создать дополнительное представление.
Был ли у кого-то опыт с симулированным проектом в прошлом?
Я вижу некоторые основные препятствия:
Laravel очень гибок и легко настраивается, у вас не должно быть никаких проблем с такими вещами вообще. Что касается базы данных, например, вы можете создать два соединения: main
фиксированное соединение с вашими основными таблицами базы данных и project
для таблиц текущего проекта, вот как это должно выглядеть:
'main' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'project' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
И вы должны быть в состоянии:
Настройте модель подключения:
<?php
namespace App;
class Posts extends Model
{
protected $connection = 'project';
}
Запросить соединения напрямую:
DB::connection('project')->table('users')->where('activated', true)->get();
Настройте базу данных во время выполнения:
config([
'database.connections.project.database' => 'project1db',
'database.connections.project.user' => $user,
'database.connections.project.password' => $password,
]);
Что касается представлений, вы можете указать Laravel найти представления там, где вам нужно, просто выполнив:
View::addLocation('/path/to/project1/');
Других решений пока нет …