Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Простой пример
class_alias(Illuminate\Support\Facades\URL::class, 'URL');
class_alias(Illuminate\Support\Facades\Input::class, 'Input');
class_alias(Illuminate\Support\Facades\View::class, 'View');
прошу обратить внимание, что люмен обрезан по самые уши.
мыльницы там по умолчанию нет.
class_alias(Illuminate\Contracts\Mail\Mailer::class, 'Mailer');
class_alias(Illuminate\Contracts\Mail\MailQueue::class, 'MailQueue');
то есть всё придётся создавать самим, даже привычные обёртки.
дойдут руки - выложу пример для простой отсылки писем
На базе Middleware
Что требует включения Middleware в /bootstrap/app.php
/app/Http/Middleware/ClearViewCacheMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
//use Laravel\Lumen\Application;
class ClearViewCacheMiddleware
{
protected $app;
// public function __construct(Application $app)
// {
// $this->app = $app;
// }
public function handle($request, Closure $next)
{
$cachedViewsDirectory=storage_path().'/framework/views/';
$files = glob($cachedViewsDirectory.'*');
foreach($files as $file) {
if(is_file($file)) {
unlink($file);
}
}
return $next($request);
}
}
/bootstrap/app.php
$app->middleware([
....
Laravel\Lumen\Http\Middleware\VerifyCsrfToken::class,
LINUX ONLY
uses whiptail or dialog or xdialog
то есть скрипт позволит автоматизировать pull-status-add-commit-push от консоли в несколько селектов и энтер.
при потоковой разработке множества приложений/репозиториев очень спасает от ввода руками одного и того же.
лицензия MIT
https://github.com/h-zone/git-auto-push-bash-script
Прошу любить и жаловать.
К сожалению в люмене консолька обрезана по самые уши...
И Я набросал небольшой пакаж для люмена (работает и в ларе)
Занимается убиение скомпилированных шаблонов и логов, используя artisan.
пример использования
php artisan cleanup-commands:logs
php artisan cleanup-commands:view-cache
Инструкция по установке и код здесь:
https://github.com/h-zone/lumen-cleanup-commands
прошу любить и жаловать.
я пока набросаю в раздел мелочей.
возможно соберётся на статью для начинающих.
Как подключить свой конфиг
/config/myconfig.php
<?php
return [
'myopt' => 42
];
/bootstrap/app.php
$app->configure('myconfig');
доступ к данным:
config('myconfig.myopt');
каким образом? тут накидать текстом или тебе в лс или на самом сейте ? (я не смотрел на морду, привычка:))
1. понимают чего хотят, - не могут это "обозвать"
1.1 следовательно не могут найти в инете необходимое решение, так как для правильного ответа необходим правильный вопрос.
2. использование прямых запросов к бд ( DB::table() ) без использования орм ( User::find() )
2.1 как следствие, - всё равно скатываются к орм
2.2 как следствие, - всё равно не знают как построить запрос к бд для получения данных
3. не понимают принципов реляций
3.1 как следствие, не понимают как создать правильную архитектуру, чем её создать и как её описать (обернуть) орм-моделями.
4. не пытаются досканально разобраться с архитектурой лары, задавая постоянно одни и те же вопросы.
знакомо?
есть смысл создавать репозиторий готовых решений (с точки зрения "проблема - код - решение")
я не предлагаю делать решениями целые ресурсы.
на форуме есть куча вопросов, при том одних и тех же. отличия только в названиях моделей.
берём тему, отвечаем готовым решением на сайте и даём в тему ссылку.
+популярность ресурса
+сквозной индекс цитирования
+проблемы с решениями
почему я за отдельный раздел, а не за ответ в теме -- потому что только за последнюю неделю одних и тех же вопросов и отдих и тех же ответов .... ну ты понимаешь меня...
PS:
основные проблемы - ORM + Query builder + мультисайтовость (масштабируемость движка) + "мультиязность".
проблема не в желании искать инфу, а в комплексе из:
а) чтобы получить правильный ответ, задо задать правильный вопрос.
б) надо знать что ты хочешь. зачастую понимание не даёт всезнания.
...архитекторы...
мдя...
1. Программер, ты на 1 лярд записей свою идею попробуй.
2. Акул
группировки в таких конструкциях хоть и работают, но жрут больше
а) попробуй для начала к пхпАдмине построить необходимый запрос (напрямую в бд) и получить правильный ответ.
б) используй к своему запросу select префикс explain select - посмотри, как глубоко дёргается база, сколько времени и ресурсов жрёт твой запрос.
в) получив ответ строй ОРМ модели НЕ используя DB обвязку - работай от моделей -- всё кошерно работает, хоть и документирован ОРМ лары всего на 10%.
и на последок:
топикстартер плохо изложил условия.
исходя из вводных предлагаю поиграть с SELECT DISTINCT compilation WHERE compilation BETWEEN 1000 AND 10000
И в последнюю очередь - если пишешь используя ORM, то старайся не скатываться к DB::
Вообще.
Используй Модель, как несущую таблицу, а дальше только от неё по связям.
Я тоже год назад думал что орм хреново построено, - ан нет. просто хреново документировано.
и в третьих
вариант "упрощёнка", но с нагрузкой на сервер и излишними итерациями
(не, не ждите готового решения, пора самим думать, а не ждать что кто-то за вас чего-то там сделает)
$Posts = Post::lists('id','votes')->get();
foreach($Posts as $Post)
{
$Posts->countCommets = $Post->countCommets();
}
$result = $Posts->toArray();
// если дальше код пишешь, то обязательно делай unset($Posts,$Post); ненужного - высвобождай память
class Comment extends Model
{
public function post()
{
return $this->belongsTo('Post');
}
}
class Post extends Model
{
public function comments()
{
return $this->hasMany('Comment');
}
public function countComments()
{
return $this->hasMany('Comment')->count();
}
}
во вторых.
есть модель Постов.
есть модель Камментов
связать согласно доументации не?
во первых чё вы все боитесь ОРМ ?
$result = DB::table('posts')
->join('comments', 'posts.id', '=', 'comments.post_id')
->select('posts.*', 'COUNT(comments.id)')
->get();Не?
Не, потому что не вернёт записи без камментов ;-)
не использовать этот сервер. он генерит конфиги находу.
поправишь для лары - упадёт не лара.
и денвер не поможет.
только вручную начать админить веб-сервера.
+опыт, фиг его, ошибок трудных.
+позволит быть мудрее
+научившись пользовать себя.
Попробуй
{{ route('profile.index', ['username' => Auth::user()->username]) }}
тут тоже будет ошибка... для неавторизованных пользователей...
...Как у людей сделано......
...
Решилась проблема - автор или админ ставит префикс теме [SOLVED]
отличная на мой взгляд идея сортинга для последующего чтения
Во первых выглядеть тремя разными видами от одного роута не может.
Всё, что кастом - $_GET-параметрами добивать придётся.
Route::get("/{GENRE}/{COUNTRY}/{ACTORS}", "MyController@myMethod");
class MyController extends Model
{
public function myMethod( $GENRE, $COUNTRY, $ACTORS )
{
}
}
смысл понял?
Спасибо, с названием таблицы вопрос полностью закрыт.
А по реализации, возможно кто нибудь подскажет более правильное решение.
для грязного чтения есть смысл использовать left join - будешь видеть несущие записи без связей (колоки с null получишь, где жойны должны быть)
Темы пойдут потоком, если будет куда сыпать.
Тут по большей степени собрались перфекционисты и максималисты, да?
Следовательно сыпать песок в аквариум не кошерно, а вот в терарриум - да.
Терарриум народу!!!
Есть смысл создать раздел по люмену.
Первыми постами вбросить краткую инфу по движку.
Уже поднаторел с движком - могу кое-где подсобить со специфичными вопросами.
->getTable() от модели никак?