Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Тогда воссоздайте структуру, данные экспортируйте в csv/xml/что_вам_удобно и заполняйте сидированием. Можно и без экспорта, просто укажите источник данных. Пример для понимания: допустим у вас есть в бд таблица с пользователями, и вы хотите их перенести на новую базу, структура которой не утверждена окончательно. Вы создаете пустую базу и миграцию:
php artisan migrate:make create_user_table
В созданной миграции описываете структуру
<?php
//app/database/migrations/timestamp_create_users_table.php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
public function up()
{
Schema::create('users', function($table)
{
$table->increments('id');
$table->char('password', 64);
$table->char('email', 32)
->index()
->unique();
$table->char('name', 32);
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
}
<?php
//app/database/seeds/UsersTableSeeder.php
class UsersTableSeeder extends DatabaseSeeder {
public function run()
{
DB::table('users')->truncate();
// Получаем пользователей из старой таблицы, connection-name - имя соединения к старой базе, модель User должна быть с ней совместима
$oldUsers = Users::on('connection-name')->all();
// для ускорения процесса лучше все обернуть в транзакцию
DB::beginTransaction();
foreach ($oldUsers as $oldUser)
{
$user = array(
'password' => $oldUser->password,
'email' => $oldUser->email,
'name' => $oldUser->name,
);
DB::table('users')->insert($user);
}
DB::commit();
}
}
Осталось прописать сида в /app/database/seeds/DatabaseSeeder.php:
class DatabaseSeeder extends Seeder {
public function run()
{
Eloquent::unguard();
$this->command->info('Создаю пользователей');
$this->call('UsersTableSeeder');
$this->command->info('Ок');
}
}
И запустить миграцию с сидированием:
php artisan migrate
php artisan db:seed
Думаю нужно написать свой драйвер авторизации, и прописать его в /app/config/auth.php
Миграции нужны при разработке, когда структура базы данных может часто меняется. Я не вижу смысла в применении миграций для готовой базы, просто напишите к ней фронт.
Возможно xCache и APC не хватает памяти, сам лично не сталкивался, но 16М для Xcache и 32М для APC ( значения по умолчанию ) мало. Воспроизвести эти ошибки мне не удалось( если не хватало памяти кэшеры просто не работали), но, теоретически, это возможно. Тесты проводил на VPS и на домашнем сервере с ubuntu server 12.04. Попробуйте установить xcache.size=32M для xCache и apc.shm_size=64M для APC и отпишитесь о результатах пожалуйста.
Попробуйте сделать одним из способов из этой темы
Сниппеты — фрагменты готового кода для быстрой вставки в текст с помощью автодополнения. Бывают и динамические сниппеты, например Emmet (по ссылке можно посмотреть как этим пользоваться).
Отказался от кодогенераторов в пользу сниппетов, для Sublime Text рекомендую эти, может будет кому полезно.
Самое простое что приходит на ум это тупо в route.php прописать
require app_path('my_route1.php');
require app_path('my_route2.php');
...
require app_path('my_routeN.php');
Дальше разбить разбить задачи на пакеты и работать как вам удобно
Советую посмотреть на контроллеры ресурсов , это немного уменьшит количество маршрутов. Я думаю хранить все маршруты в одном файле это наоборот удобно.
В l4 для get, first и find запросов можно использовать метод remember( $minutes ) и rememberForever()
User::rememberForever()->findOrFail( $id );
User::where( 'age', '>', '18')->remember( 10 )->get();
User::where( 'email', '=', $email )->remember( 10 )->firstOrFail();
Непосредственно Eloquent этого не умеет, но умеет QueryBuilder.
Еще вариант через asset
<link rel="stylesheet" type="text/css" href="{{ asset('сss/style.css') }}">
<script src="{{ asset('js/jquery.js') }}"></script>
<img src="{{ asset('img/logo.png') }}" alt="Logo">
Сделайте собственное правило проверки, я обычно расширяю класс. Код для понимания как это работает смотрим в /vendor/laravel/framework/src/Illuminate/Validation/Validator.php
Можно использовать заготовки запросов.
public function scopeEdit( $query )
{
return $query->select('name', 'email'); // Поля для заполнения
}
public function getEditUser( $id )
{
$view = View::make( 'edit.user' );
$view->user = User::edit()->findOrFail( $id );
return $view;
}
{{ Form::model($user) }}
{{ Form::text('name') }}
{{ Form::text('email') }}
{{ Form::close() }}
Забыл, если нужен artisan для второго сайта, создаем рядом с artisan.php файл artisan2.php(имя может быть любое)
#!/usr/bin/env php
<?php
require __DIR__.'/bootstrap2/autoload.php';
$app = require_once __DIR__.'/bootstrap2/start.php';
$app->setRequestForConsoleEnvironment();
$artisan = Illuminate\Console\Application::start($app);
$status = $artisan->run();
$app->shutdown();
exit($status);
Теперь artisan для второго сайта будет доступен по команде php artisan2(или как вы его назвали)
Можно. Структура:
--app
--app2
--bootstrap
--bootstrap2
--public
--public2
<?php
require __DIR__.'/../bootstrap2/autoload.php';
$app = require_once __DIR__.'/../bootstrap2/start.php';
$app->run();
<?php
return array(
'app' => __DIR__.'/../app2',
'public' => __DIR__.'/../public2',
'base' => __DIR__.'/..',
'storage' => __DIR__.'/../app2/storage',
);
На сервере настроить 1й сайт на public, 2й на public2. Вроде все