Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
С потерей реквеста между методами справился так:
class TestController extends Controller
{
private $x;
public function search(Request $ request)
{
$result= Post::where('title',$request->get('title'))->get();//для примера
$this->x=$result;
return $this->x;
}
public function index (Request $request)
{
$this->search($request);
$r=$this->x;
$request->flash();//кладу в сессию
return view ('search.result','r'=>$r);
}
public function message($request)
{
$request->request->add($request->old()); //реквест пустой, но я в него из сессии кладу "старый" реквест
$this->search($request);
$r=$this->x;
return Excel::download(new SearchExport($r, 'export.xlsx');
}
}
всё как мне надо, но запроса по прежнему два одинаковых...
DemiurgeБлагодарю за ответ.
Вот так работает, как мне надо:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
private $x;
public function index()
{
$this->x ='111';
}
public function message()
{ $this->index();
echo '$this->x= '. $this->x;
}
}
На самом деле у меня в методе index формируется коллекция eloquent - результат поиска, и по нажатию кнопки выводится вьюшка с результатами поиска, а в метод message я пытаюсь передать из метода index эту самую коллекцию, чтобы потом при нажатии кнопки "Экспорт" на вьюшке с результатами происходил экспорт в Excel, как то так:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
use App\Exports\SearchExport;
use Maatwebsite\Excel\Facades\Excel;
class TestController extends Controller
{
private $x;
public function index(Request $ request)
{
$result= Post::where('title',$request->get('title'))->get();//для примера
$this->x=$result;
return view('search.result',['$res'=>$result]);
}
public function message()//сюда хочу передать коллекцию чтобы 2 раза не считать поисковый запрос
{
return Excel::download(new SearchExport($this->x), 'export.xlsx');
}
}
Ведь если я сделаю так:
class TestController extends Controller
{
private $x;
public function search(Request $ request)
{
$result= Post::where('title',$request->get('title'))->get();//для примера
$this->x=$result;
return $this->x;
}
public function index (Request $request)//выводит результат во вьюшку при нажатии кнопки поиск на форме поиска
{
$this->search($request);
$r=$this->x;
return view ('search.result','r'=>$r);
}
public function message($request)//метод вызывается при нажатии на кнопку экспорт на странице, на которой уже посчитан и отображён
//результат поиска
{ $this->search($request);//а тут я ещё раз всё ищу в БД
$r=$this->x;
return Excel::download(new SearchExport($r, 'export.xlsx');
}
}
как тут выкрутиться красиво?
PS когда я вызываю $this->search($request) в методе message, Request будет другой, и как следствие, в excel отобразится совсем не то,что во вьюшке..печаль
Доброго времени суток. Использую Laravel 5.8.17, Apache 2.4, Windows7, MS SQL 2012. Хочу передать переменную из одного public метода в другой:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
private $x;
public function index()
{
$this->x ='111';
echo '$this->x= '. $this->x;
}
public function message()
{
echo '$this->x= '. $this->x;
}
}
когда вызываю метод index - выводит $this->x=111, когда вызываю метод message - выводит $this->x= и не видит значение из метода index. Все clear команды и composer dump-autoload выполнял.
Наверняка кто-то пытался такое или подобное делать. В оригинале пытаюсь передать из одного метода в другой результат запроса, так что в сессию его не хочу класть да и в Cache тоже...
Спасибо.
Доброго времени суток.
Наведите пожалуйста на мысль: как сделать разграничения доступа к таблицам MSSQL для разных пользователей моего приложения:
например, пользователю Alex к таблице Sales разрешить только select, пользователю Boris select и insert и тд, причём желательно делать это гибко, как это можно делать средствами SQL Server Management Studio.
У меня есть пользователи домена и роли для них, заданные в SQL Server Management Studio, которые всё это обеспечивают, но не знаю, как обращаться к БД от имени текущего пользователя, поэтому хочу сделать авторизацию пользователей в вэб приложении, которая идёт из коробки, и уже как то потом для них задавать роли. Прошу помощи форумчан. Спасибо!
Версия Laravel: 5.5.22
Версия PHP: 7.1.12
Операционная система и её версия: Windows Server 2008 R2
Вендор и версия сервера БД: MSSQL Server 2012
Вендор и версия Веб-сервера: Apache 2.4.23
Доброго времени суток.
Версия Laravel:5.5.20
Версия PHP:7.0.13
Операционная система и её версия:Windows Server 2008 R2 Enterprise
Вендор и версия сервера БД: Microsoft SQL Server 2012 - 11.0.5058.0 (X64) Enterprise Edition (64-bit) (Build 7601: SP 1)
Вендор и версия Веб-сервера: Apache 2.4.23
Метод подключения PHP: apache2_4.dll
Задача, что должно происходить _в целом_, техническое задание:
При создании миграции через artisan и её выполнении должны создаваться таблица в моей БД - нет результата
Что произошло, текст ошибки, если есть:
ошибка при выполнении команды php artisan migrate
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] Подключение не установлено, т.к. конечный компьютер
отверг запрос на подключение.
(SQL: select * from information_schema.tables where table_schema = homeste
ad and table_name = migrations)
[PDOException]
SQLSTATE[HY000] [2002] Подключение не установлено, т.к. конечный компьютер
отверг запрос на подключение.
Варианты/догадки, почему это произошло:
Как видно из текста ошибка-не происходит соединение с SQL сервером.Что было предпринято для устранения ошибки:
для учётки, из под которой соединяюсь с БД, дал все возможные разрешения для моей БД
привожу .env и config\database.php
.env
DB_CONNECTION=sqlsrv
DB_HOST=127.0.0.1
DB_PORT=1433
DB_DATABASE='TZ'
DB_USERNAME='laravel'
DB_PASSWORD='123456'
config\database.php
'default' => env('DB_CONNECTION', 'sqlsrv'),
..........................................
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'TZ'),
'username' => env('DB_USERNAME', 'laravel'),
'password' => env('DB_PASSWORD', '123456'),
'charset' => 'utf8',
'prefix' => '',
],
для имени хоста пробовал писать localhost не помогло. Есть ещё виртуальная машина , где Windows 7, apache 2.4.26 и PHP 7.0.21 - та же ошибка при создании миграции. PDO, Microsoft odbc drivrer for Sql Server, sqlsrv для php установлены, на php,но не из под laravel нормально с ними работаю.
Прошу помощи форумчан, тк если нет соединения с БД, то это безысходность полная.Спасибо.
UPD
вот что помогло, может кому пригодится:
В конфигурации сервера(Диспетчер конфигурации - Сетевая конфигурация SQL сервер - протоколы для <имя экземпляра> - TCP-IP - IP-адреса) есть группа параметров IPAll, вот там тоже надо было указать порт (1433), чтобы соединения на порт 1433 заработали.
http://www.sql.ru/forum/1084876/windows … ql-2008-r2 - последний пост. Ну и службу потом перезапускаем.
..их нужно вызывать с помощью EXEC и оказалось что это работает
ну и замечательно, то что надо. думаю и параметры в них тоже можно будет передавать.
скорее всего view должны поддерживать SELECT
ещё как поддерживают:) Вьюшка, как правило - один большой громоздкий select со вложенными запросами из многих таблиц, по крайней мере в моём случае это так.
constb, спасибо за ответ.
\DB::connection() без проблем выбирает данные из процедур на ms sql
Вы имеете ввиду, что если процедура возвращает набор строк, то тогда можно работать с этими строками? Если так, то впринципе меня это устраивает, тк мои хранимки формируют отчёты в основном
Потом Вы говорите
но вот касательно построителя запросов и моделей элоквента – «меня терзают смутные сомнения». всё упирается в синтаксис запроса – можно ли ко view и stored_proc обращаться как к обычной таблице SELECT-ом.
Тут Вы имеете ввиду, что будут трудности именно в создании хранимых процедур и вьюшек на лету? Так мне и не надо это вроде, пока..Работать планирую с уж готовыми из бд, просто исполнять, я так понял, что это возможно.. Просто не добрался ещё то той части функционала фрейма, которая работает с бд.
Спасибо, Cheshirrski, золотой Вы человек. А разрешите ещё вопрос, он вообщем то офф-топ, но ужасно мне интересен:
Задумал полностью перевести свой костыльный проект в локальной сети на лара, тк он разросся и превратился в тихий ужас. Костыль-проект работает с бд на MS SQL, и часть фунцкионала обеспечивают представления и хранимые процедуры.
Вопрос: смогут ли те инструменты (понятное дело, что я ещё до них не добрался), которые предоставляет фрейм работать со всеми этими view и storred_proc?
Спасибо.
Доброго времени суток!
Установил фреймворк версии 5.4.27, увидел главную страницу Laravel, пытаюсь проверить его работу, отобразив Hello world. В app/http/ файл route.php не создался (а должен ли?), создал его вручную, и в нём прописал
Route::get('/', function () {
return 'Hello World';
});
И хочу при попадании на адрес localhost/laravel/public увидеть Hello world, но ничего не происходит, по прежнему вижу главную Laravel.
ОС Windows 7, Apache 2.4.23, php 7.1.6, mod_rewrite в Apache включён, .htaccess в public не трогал.
Это мой первый пост на форуме, понимаю, что вопрос относиться к категории faq для чайников, но такового не нашёл. Прошу помочь, тк понимаю, что без освоения роутинга продвигаться дальше не смогу, а очень бы хотелось разобраться во фреймворке.
Страницы 1