Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#51 Re: Laravel 4 » Новое приложение для старой базы данных » 12.07.2014 21:30:13

Тогда воссоздайте структуру, данные экспортируйте в csv/xml/что_вам_удобно и заполняйте сидированием. Можно и без экспорта, просто укажите источник данных. Пример для понимания: допустим у вас есть в бд таблица с пользователями, и вы хотите их перенести на новую базу, структура которой не утверждена окончательно. Вы создаете пустую базу и миграцию:

PHP
php artisan migrate:make create_user_table

В созданной миграции описываете структуру

PHP
<?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
<?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:

PHP
class DatabaseSeeder extends Seeder {

  public function 
run()
  {
    
Eloquent::unguard();

    
$this->command->info('Создаю пользователей');
    
$this->call('UsersTableSeeder');
    
$this->command->info('Ок');

  }

}

И запустить миграцию с сидированием:

PHP
php artisan migrate
php artisan db
:seed

#52 Re: Laravel 4 » ID Сессии без куки » 12.07.2014 19:15:33

Думаю нужно написать свой драйвер авторизации, и прописать его в /app/config/auth.php

#53 Re: Laravel 4 » Новое приложение для старой базы данных » 12.07.2014 19:01:44

Миграции нужны при разработке, когда структура базы данных может часто меняется. Я не вижу смысла в применении миграций для готовой базы, просто напишите к ней фронт.

#54 Re: Laravel 4 » Undefined property $attributes » 27.04.2014 14:01:50

Возможно xCache и APC не хватает памяти, сам лично не сталкивался, но 16М для Xcache и 32М для APC ( значения по умолчанию ) мало. Воспроизвести эти ошибки мне не удалось( если не хватало памяти кэшеры просто не работали), но, теоретически, это возможно. Тесты проводил на VPS и на домашнем сервере с ubuntu server 12.04. Попробуйте установить xcache.size=32M для xCache и apc.shm_size=64M для APC и отпишитесь о результатах пожалуйста.

#55 Re: Laravel 4 » Undefined property $attributes » 24.04.2014 12:05:14

Возможно что-то не то с правами на папку /app/storage/views, сам сижу пока на php 5.3, все нормально работает

#56 Re: Laravel 4 » Whoops, looks like something went wrong. » 23.04.2014 18:43:59

В файле /bootstrap/start.php — опция ’local’ ⇒ array(’your-machine-name’), нужно установить вместо ’your-machine-name’ имя вашего сервера, или в файле /app/config/app.php установить debug=>true, но тогда ошибки будут видны из production.

#57 Re: Laravel 4 » Проверка на существование записей в связующей таблице » 22.04.2014 18:43:10

Сделайте PHP{{ dd$book->translators ) }}, посмотрите что там лежит в случае когда нет переводчика и делайте проверку на это условие

#59 Re: Laravel 4 » Кодогенераторы » 15.04.2014 23:43:57

Сниппеты — фрагменты готового кода для быстрой вставки в текст с помощью автодополнения. Бывают и динамические сниппеты, например Emmet (по ссылке можно посмотреть как этим пользоваться).

#61 Re: Laravel 4 » Кодогенераторы » 11.04.2014 22:09:09

Отказался от кодогенераторов в пользу сниппетов, для Sublime Text рекомендую эти, может будет кому полезно.

#62 Re: Laravel 4 » Роутинг » 13.03.2014 22:03:07

Самое простое что приходит на ум это тупо в route.php прописать

require app_path('my_route1.php');
require app_path('my_route2.php');
...
require app_path('my_routeN.php');

Дальше разбить разбить задачи на пакеты и работать как вам удобно

#63 Re: Laravel 4 » Роутинг » 13.03.2014 20:49:36

Советую посмотреть на контроллеры ресурсов , это немного уменьшит количество маршрутов. Я думаю хранить все маршруты в одном файле это наоборот удобно.

#64 Re: Laravel 4 » Eloquent и кеширование » 13.03.2014 20:21:57

В 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.

#65 Re: Laravel 4 » base_url » 13.03.2014 18:03:27

Еще вариант через 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">

#66 Re: Laravel 4 » [L4] Не определяется MIME-тип исполняемых файлов (exe) » 02.02.2014 01:01:09

Сделайте собственное правило проверки, я обычно расширяю класс. Код для понимания как это работает смотрим в /vendor/laravel/framework/src/Illuminate/Validation/Validator.php

#67 Re: Laravel 4 » [L4] Не определяется MIME-тип исполняемых файлов (exe) » 01.02.2014 19:42:12

  1. так и не нашёл заветную строку с преобразованием MIME

в /vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeExtensionGuesser.php

Вам нужно делать проверку ’inputfile’ ⇒ ’mimes:bin’

#69 Re: Laravel 4 » Проблема с маршрутизацией » 22.01.2014 12:36:30

А папка sites-available есть? Если нет, замените <Directory "c:/wamp/www/"> на <Directory «c:/wamp/www/путь_к_папке_public»> в C:\wamp\bin\apache\apache2.2.22\conf.
Теперь по адресу http:localhost у вас должен открыться экран приветствия(от Laravel), а по пути http:localhost/tasks — hello world.

#70 Re: Laravel 4 » Проблема с маршрутизацией » 22.01.2014 10:59:04

Значит ошибка где-то в настройках WAMP. Покажите настройки VirtualHost.

#71 Re: Laravel 4 » Проблема с маршрутизацией » 21.01.2014 18:37:50

А

PHP
Route::get('tasks', function()
{
    return 
'hello world';
});

работает?

#72 Re: Laravel 4 » Хешированный пароль в форме при обращении через модель?! » 21.01.2014 18:32:05

Можно использовать заготовки запросов.

В модель User дабавляем:

PHP
    public function scopeEdit$query )
    {
        return 
$query->select('name''email'); // Поля для заполнения
    
}

В контроллере:

PHP
    public function getEditUser$id )
    {
        
$view View::make'edit.user' );
        
$view->user User::edit()->findOrFail$id );

        return 
$view;
    }

View /edit/user.blade.php

PHP
{{ Form::model($user) }}
{{ 
Form::text('name') }}
{{ 
Form::text('email') }}
{{ 
Form::close() }}

#73 Re: Прочее » С наступающем Новым годом! » 31.12.2013 16:52:02

Интузазизма, вдахнавения иинтиресных праэктаф фсем!

#74 Re: Laravel 4 » Мультисайт на laravel » 24.12.2013 14:53:41

Забыл, если нужен artisan для второго сайта, создаем рядом с artisan.php файл artisan2.php(имя может быть любое)

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(или как вы его назвали)

#75 Re: Laravel 4 » Мультисайт на laravel » 24.12.2013 14:41:56

Можно. Структура:
--app
--app2
--bootstrap
--bootstrap2
--public
--public2

Файл --public2/index.php

PHP
<?php

require __DIR__.'/../bootstrap2/autoload.php';

$app = require_once __DIR__.'/../bootstrap2/start.php';

$app->run();

Файл --bootstrap2/paths.php

PHP
<?php
return array(
    
'app' => __DIR__.'/../app2',
    
'public' => __DIR__.'/../public2',
    
'base' => __DIR__.'/..',
    
'storage' => __DIR__.'/../app2/storage',

);

На сервере настроить 1й сайт на public, 2й на public2. Вроде все

Подвал раздела