Laravel по-русски

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

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

#1 Re: Laravel 5 » Как получить количество сообщений из другой таблицы в orm запросе? » Вчера 20:32:27

Варинаты которые я не знаю как приурочить

->with(['unread_messages_count' => function($query)
            {
                $query->orderBy('created_at', 'desc');
                MessageChat::where('active', 1)->where('read',0)->count();
            }])
             //->select(DB::raw('count(*) as chat_messages'))
           ->join('chat_messages', 'chat_messages.chat_id', '=', 'orders.user_id')
            ->select('users.id', 'contacts.phone', 'orders.price');

#2 Laravel 5 » Как получить количество сообщений из другой таблицы в orm запросе? » Вчера 20:29:41

Kirir
Ответов: 1

Как получить количество сообщений из другой таблицы в orm запросе?

     $messages = ChatMessage::where('user_id', Auth::id())
            ->orderBy('created_at', 'desc')
            ->select(['chat_id'])
            ->distinct()
            ->with('chat.last_message.user_fields')
            ->with('chat.last_message.user_session')
            ->get();
  <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ChatMessage extends Model
{
    protected $fillable = ['chat_id','user_id', 'text'];

    public function user_fields()
    {
        return $this->hasMany('App\Models\UserFieldsValues','user_id','user_id')
            ->where('fields_id',35)
            ->orWhere('fields_id',36);
    }

    public function user_session()
    {
        return $this->hasOne('App\Models\Session','user_id','user_id')
            ->orderBy('last_activity', 'desc')
            ->where('last_activity','>', time()-5*60)
            ->select(['id','last_activity', 'user_id']);
    }

    public function chat()
    {
        return $this->hasOne('App\Models\Chat','id','chat_id');
    }
}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Chat extends Model
{
    protected $fillable = ['name','id'];

    public function last_message()
    {
        return $this->hasOne('App\Models\ChatMessage')->orderBy('created_at', 'desc');
    }

    public function unread_messages_count()
    {
        return $this->hasMany('App\Models\ChatMessage')->where('read',0)->count();
    }
}

#3 Laravel 5 » Как получить количество сообщений из другой таблицы в orm запросе? » Вчера 20:29:12

Kirir
Ответов: 0

Как получить количество сообщений из другой таблицы в orm запросе? Запрос выглядит так

     $messages = ChatMessage::where('user_id', Auth::id())
            ->orderBy('created_at', 'desc')
            ->select(['chat_id'])
            ->distinct()
            ->with('chat.last_message.user_fields')
            ->with('chat.last_message.user_session')
  /* ->with(['unread_messages_count' => function($query)
            {
                $query->orderBy('created_at', 'desc');
                MessageChat::where('active', 1)->where('read',0)->count();
            }])*/
             //->select(DB::raw('count(*) as chat_messages'))
            ->get();
  <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ChatMessage extends Model
{
    protected $fillable = ['chat_id','user_id', 'text'];

    public function user_fields()
    {
        return $this->hasMany('App\Models\UserFieldsValues','user_id','user_id')
            ->where('fields_id',35)
            ->orWhere('fields_id',36);
    }

    public function user_session()
    {
        return $this->hasOne('App\Models\Session','user_id','user_id')
            ->orderBy('last_activity', 'desc')
            ->where('last_activity','>', time()-5*60)
            ->select(['id','last_activity', 'user_id']);
    }

    public function chat()
    {
        return $this->hasOne('App\Models\Chat','id','chat_id');
    }
}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Chat extends Model
{
    protected $fillable = ['name','id'];

    public function last_message()
    {
        return $this->hasOne('App\Models\ChatMessage')->orderBy('created_at', 'desc');
    }

    public function unread_messages_count()
    {
        return $this->hasMany('App\Models\ChatMessage')->where('read',0)->count();
    }
}

#6 Laravel 5 » Как использовать результат запроса eloquent в следующем запросе? » 18.05.2019 20:56:06

Kirir
Ответов: 1

Допустим, есть запрос

$messages = ChatMessage::where('user_id', Auth::id())
       ->orderBy('created_at', 'asc')
       ->select(['chat_id'])
       ->take(5)
       ->distinct()
       ->with('chat')
       ->get();


Он получает по последним сообщениям чаты. Как можно в следующем запросе(снова по сообщениям, но там именно использовать фильтрацимю по чатам, то есть получить с каждого чата 5 последних сообщений(created_at тот же)) использолвать его результаты?

Данные тут https://laravel.ru/forum/viewtopic.php?id=4170

#7 Laravel 5 » Тройная вложенная загрузка работает неправильно » 16.05.2019 20:34:20

Kirir
Ответов: 1

Тройная вложенная загрузка работает неправильно
https://prnt.sc/npghly

Должно быть - через участника чата(коих берётся 5 последних) берётся чат(1 к 1), а каждый чат берёт по 5 последних сообщений

Как есть - как выше, но почему-то берётся в сумме 5 сообщений на все чаты(сейчас есть 2 чата, в первом 3 сообщения и во втором 4, в итоге подгружает у первого чата 3, а у второго ток 2)

<?php

namespace App\Http\Controllers\SocNet;

use App\Models\ChatMember;
use App\Models\Log;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;


class MessageController extends Controller {
	public function __construct() {
		$this->middleware('auth');
	}

    public function chats(Request $request) {
       $result = ChatMember::where('user_id', Auth::id())
            ->orderBy('created_at', 'asc')
            ->take(5)
            ->with('chat.last_messages.user')
            ->get();

        return \SocNet::getSocNet(['usersChats'=> $result]);
    }

	public function send(Request $request) {
        event(new \App\Events\PushMessageEvent($request->message));
	}

}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ChatMember extends Model
{
    protected $fillable = ['user_id','chat_id','user_author','notifications'];

    public function chat()
    {
        return $this->hasOne('App\Models\Chat','id','chat_id');
    }
}
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Chat extends Model
{
    protected $fillable = ['name'];

    public function last_messages()
    {
        return $this->hasMany('App\Models\ChatMessage')->orderBy('created_at', 'asc')->take(5);
    }

    public function unread_messages()
    {
        return $this->hasMany('App\Models\ChatMessage')->orderBy('created_at', 'asc')->where('read',0)->take(5);
    }
}

#8 Re: Прочее » Популяризация сообщества Laravel » 21.04.2019 01:41:59

Да в телеге меня случайно в бан добавили. Нарно я зашёл и профанил проверку на бота, но потом написал админку и он разбанилю

#9 Re: Laravel 5 » Не работает подгрузка css файла у react-datepicker » 03.04.2019 19:47:31

Надо было прописать в строке так
test: /\.(scss|css)$/,

Именно в webpack.dev

#11 Laravel 5 » Не работает фильтрация записей по промежутку дат » 28.03.2019 18:02:35

Kirir
Ответов: 2

Не работает фильтрация записей по промежутку дат. Вместо фильтрации тащит все записи.

$logs = Log::orderBy('date', 'desc')->with('user')->get();
        if ($request->has('searchText')) $logs->where('msg', 'like', '%' . $request->searchText . '%');
        if ($request->has('dateStart') && $request->has('dateEnd')) {

            //$logs->whereBetween('date', [$request->dateStart, $request->dateEnd]); //2018-02-10
            $date1 = new \DateTime($request->dateStart);
            $date2 = new \DateTime($request->dateEnd);
            \Illuminate\Support\Facades\Log::info('infp', [$date1->format('Y-m-d H:i:s'), $date2->format('Y-m-d H:i:s')]);
            //[2019-03-28 13:54:58] local.INFO: infp ["2019-03-28 16:00:00","2019-03-28 16:15:00"] 
            $logs->whereBetween('date', [$date1->format('Y-m-d H:i:s'), $date2->format('Y-m-d H:i:s')]);
        }
        if ($request->has('typeLog')) $logs->where('typeLog', $request->typeLog);
        if ($request->has('userName')) $logs->where('userName', $request->userName);
        $logs = $logs->paginate(2);
        $users = User::select('name')->get();
        $types = ['Регистрация', 'Оплата', 'Приглашение'];
        return json_encode([
            'logs' => $logs,
            'users' => $users,
            'typesMsg' => $types
        ]);

Ключевой код

//[2019-03-28 13:54:58] local.INFO: infp ["2019-03-28 16:00:00","2019-03-28 16:15:00"] 
            $logs->whereBetween('date', [$date1->format('Y-m-d H:i:s'), $date2->format('Y-m-d H:i:s')]);

#12 Re: Laravel 5 » Не работает подгрузка css файла у react-datepicker » 26.03.2019 21:52:20

Добавление в реакт микс проблему не решает

mix.react('resources/js/index.tsx', 'public/js')
	.webpackConfig({
		module: {
			rules: [
				{
					test: /\.tsx?$/,
					loader: 'ts-loader',
					exclude: /node-modules/,
				},
				{
					test: /\.scss$/,
					use: ExtractTextPlugin.extract({
						fallback: 'style-loader',
						use: ['css-loader', 'sass-loader']
					})
				},
                {
                    test: /\.css$/,
                    use: ExtractTextPlugin.extract({
                        fallback: 'style-loader',
                        use: ['css-loader']
                    })
                }
			],
		},

#13 Laravel 5 » Не работает подгрузка css файла у react-datepicker » 26.03.2019 21:48:20

Kirir
Ответов: 2

Развернул проект, поставил реакт вместо вуе, поставил дата пикер
https://www.npmjs.com/package/react-datepicker

Импортирую в компонент дата пикер, работает, импортирую ксс дата пикера, выдаёт ошибку
http://prntscr.com/n3a3c5
index.js:8 Uncaught (in promise) Error: Module parse failed: Unexpected token (1:0)
You may need an appropriate loader to handle this file type.
> .react-datepicker-popper[data-placement^="bottom"] .react-datepicker__triangle, .react-datepicker-popper[data-placement^="top"] .react-datepicker__triangle, .react-datepicker__year-read-view--down-arrow,
| .react-datepicker__month-read-view--down-arrow,
| .react-datepicker__month-year-read-view--down-arrow {
    at Object../node_modules/react-datepicker/dist/react-datepicker.css (index.js:8)

#14 Laravel 5 » Создатель представлений(в чём смысл?) » 20.02.2019 00:47:19

Kirir
Ответов: 0

Прочитал в доке о создателе представлений, но не понял что он из себя представляет и как его использовать. Написано, что он создаётся при создании экземпляра представления до отрисовки хтмл, но не понимаю в каких ситуациях это может понадобиться? В случае composer ведь тоже до отрисовки доп переменные объявляются.

#15 Прочее » Популяризация сообщества Laravel » 14.02.2019 22:51:41

Kirir
Ответов: 2

Всем привет! На дворе уже 2019-ый. Комьюнити Laravel в мире растёт как на дрожжах(а также дружба Laravel с Vue), но я заметил, что конкретно в России активное ларавел-сообщество только среди представителей разработчиков дочернего инструментария на основе ларавел - October CMS. Есть 2 канала чисто для Laravel в телеграмме, но они закрыты sad Хочу поинтересоваться, как так?) А проводят ли ларавельщики в России(Москве и Питере) мероприятия? В общем, хочу узнать про все подробности о движухе по ларе. Также хочу по возможности стать активистом и помочь в привлечении свежей крови для нашего любимого фреймворка.

#16 Re: Вакансии » Ищу консультанта по Laravel » 14.02.2019 22:40:54

Здорова. Ну, я сам давно с laravel не работал, но с конца прошлого года активно въезжаю, т.к надоел друпал, а другие цмс и фреймы не понравились. Если хочешь, могу рассказать основные темы, что бы ты мог сделать простое spa с vue, crud для контента(с принятием файлов),регистрацией, авторизацией, проверкой роли при работе с контентом, ну и вьюхами, выводом ошибок форм.

#17 Laravel 5 » [RuntimeException] Could not scan for classes inside "database" » 08.02.2019 00:09:53

Kirir
Ответов: 0

[RuntimeException]
Could not scan for classes inside "database" which does not appear to be a file nor a folder

В общем, ввёл composer install, пошла установка пакетов

Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead.
Writing lock file
Generating autoload files

И потом вот такое вылезло

[RuntimeException]
  Could not scan for classes inside "database" which does not appear to be a file nor a folder

В инете написано, что..
1) Надо удалить composer.lock. Не сработало.
2) Сгенерировать ключ. Не сработало
3) Поставить другую версию пхпх, ну с 5.6 оно и работает(с 7-кой сразу пишет, что нужна 5.6), но всё равно такая ошибка.

#18 Общий раздел » Запустить Laradock на Windows 7 » 04.02.2019 19:52:14

Kirir
Ответов: 0

В общем, поставил docker tolbox, далее прошёлся по инструкции установки ларадок
https://laradock.io
Ларадок запускается, всё работает.

D:\laradock>docker-compose up nginx mysql phpmyadmin redis workspace
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1 ... done
Creating laradock_redis_1 ... done
Creating laradock_workspace_1 ... done
Creating laradock_phpmyadmin_1 ... done
Creating laradock_php-fpm_1 ... done
Creating laradock_nginx_1 ... done
Attaching to laradock_mysql_1, laradock_redis_1, laradock_workspace_1, laradock_
phpmyadmin_1, laradock_nginx_1
mysql_1 | Initializing database

Однако при переходе на http://localhost пишет, что ничего нет.

Потом попробовал
https://stackoverflow.com/questions/...st-not-working
run docker run -p 80:80 nginx
и нгникс запустился по адресу
http://192.168.99.100
Но это не то и я не совсем понимаю как туда поставить ларавел проект.

Хотел перезапустить контейнеры, ввёл docker nginx stop, а потом снова запустил и теперь ошибка с ngnix(как его отключить? перезапуск докера не помог)
ERROR: for laradock_nginx_1 Cannot start service nginx: driver failed programmi
ng external connectivity on endpoint laradock_nginx_1

#20 Re: Laravel 5 » Как правильно организовать spa с авторизацией? » 25.01.2019 23:24:55

Мне пока что самым простым решением кажется не блокировать роутинг компонентов на уровне хуков, а просто вынести из компонента app шапку с навигацией в отдельный компонент и пихать его во все компоненты-страницы, что бы каждый компонент просто делал именно свой запрос, принимал нужные данные + инфу о юзере, показывал доступный контент и передавать инфу о юзере в дочерний компонент шапки, что бы он решил, какие пункты меню показывать, а какие нет. Единственное, что не нравится в этом способе - это копипаста компонента шапки во все компоненты-страницы.

#21 Laravel 5 » Как правильно организовать spa с авторизацией? » 25.01.2019 20:29:09

Kirir
Ответов: 2

Как правильно организовать spa с авторизацией?
Сначала я хотел делать запрос в App родительском компоненте в created, но если спа уже есть и юзер переходит на страницу компонента, а его забанили), то нужно выводить ошибку. Глобальный хук beforeEach позволяет мне отловить событие, но как мне выводить иконку загрузки до перехода?

Или лучше оставить, что бы юзер мог проходить на любую страницу-компонент и просто в событии created/update в запросе при получении ответа с json(с параметром, что доступа нет) выводить в шаблоне(если роль запрещает) сообщение об этом? Но ведь мне и у родительского компонента надо блокировать/скрывать некоторые навигационное меню в шаблоне, как передавать родителю данные дочер компонента? Редукс?

#22 Re: Laravel 5 » Настроить маршрут по пути из переменных » 25.01.2019 16:48:45

Малось гробокопание, но в 5.7 маршрут по любому урл можно сделать так

Route::get('/{any}', 'SpaController@index')->where('any', '.*');

#23 Laravel 5 » Не работает hot module replacment » 24.01.2019 22:40:50

Kirir
Ответов: 0

Не работает hot module replacment, сделал как написано тут
https://laracasts.com/discuss/channels/ … rowsersync
При запуске он пытается открыть http://localhost:3000 но не работает(пробывал хост заменить)

const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.browserSync(
    {
        proxy: "test.dev",
        notify: false
    }

)

mix.browserSync()

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');

#24 Re: Laravel 5 » Laravel 5.7 не работает ExampleComponent(не рендерит компоненты) » 23.01.2019 23:59:50

Тю, вопрос решён - надо было просто запихнуть компонент внутрь div app

#25 Laravel 5 » Laravel 5.7 не работает ExampleComponent(не рендерит компоненты) » 23.01.2019 20:20:21

Kirir
Ответов: 1

Установил модули ноды
npm install

Включил смотрителя-сборщика (работает успешно, реагирует на изменения, пересобирает)
npm run watch

В welcone.blade вписал
<example-component></example-component>
а ниже body подключил app.js (файл подгружается без ошибок, если вписать в resources\js\app.js консоль лог с чем-нибудь, то выводит)

Компонент в виде тегов виден, но он не генерирует своё содержимое, ошибок в консоли нет. Странно.

п.с почему-то работает только в таком варианте(просто div он тоже не видит и не генерит компонент)
<example-component id = "example-component"></example-component>
  <script type="text/javascript">
        new Vue({ el: '#example-component' })
    </script>

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