我有一個變數$data1,我想與我的所有控制器共享 $data1 的值并使用它
在我的 >FirstController
$data1 = reservation::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
在我的 >SecondController 中((我想使用 data1 的值))
$msg = new message();
$msg->date = Carbon::now();
$msg->content = request('content');
$msg->user_id = Auth::user()->id;
$msg->reciver = $data1; // here is where i want to use the value of $data1
注意:$data1 的值會發生變化。
更新: 我有一個表單(res.blade.php),用戶在其中插入我在第一個控制器/日期、時間、room_id / 中請求的資料的資料。然后我將用戶重定向到另一個刀片,他在其中插入新資訊(內容)然后我保存新資料 我從第一個刀片的輸入中獲得的$data1
uj5u.com熱心網友回復:
使用以下函式創建中間件 CommonData.php:
public function handle($request, Closure $next)
{
$data1 = reservation::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
$request->merge(['data1'=>$data1);
return $next($request);
}
在這樣的任何控制器中使用它: $request->data1 或 request('data1')
uj5u.com熱心網友回復:
您可以生成一個名為 Data1Middleware.php 的全域中間件:
public function handle($request, Closure $next)
{
$data1 = reservation::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
$request->request->add(['data1', $data1]);
return $next($request);
}
并添加到 app/Http/Kernel.php 中的 $middleware 作為資源。
protected middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
'App\Http\Middleware\VerifyCsrfToken',
//....
\App\Http\Middleware\Data1Middleware::class,
]
編輯:
如果“reservation”是您的模型,也許它必須是 CamelCase(例如:Reservation)并在中間件檔案頂部添加:
<?php
//....
use App\Models\Reservation;
//....
public function handle($request, Closure $next)
{
$data1 = Reservation::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
$request->request->add(['data1', $data1]);
return $next($request);
}
但是如果“reservation”是資料庫表名,那么您可以使用查詢生成器獲取資料:
use Illuminate\Support\Facades\DB;
public function handle($request, Closure $next)
{
$data1 = DB::table('reservation')::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
$request->request->add(['data1', $data1]);
return $next($request);
}
uj5u.com熱心網友回復:
讓我們使用PHP Trait來解決這個問題。
創建一個特征
<?PHP
namespace App\Traits;
use App\Models\Reservation;
trait HasReservationData
{
public function reservationData()
{
// Better keep the model name start's with capital letter i.e. Pascal Case
return Reservation::select('user_id')
->where('date',request('date'))
->where('time',request('time'))
->where('room_id',request('room_id'))
->get();
}
}
現在讓我們為需要預訂資料的控制器使用 Trait。
<?PHP
namespace App\Http\Controllers\StackOverFlow;
use App\Traits\HasReservationData;
class FirstController
{
use HasReservationData;
public function someMethod()
{
// You have the data here and manipulate the data however you want
$data = $this->reservationData();
$msg = new Message();
$msg->date = now();
$msg->content = request('content');
$msg->user_id = Auth::user()->id;
$msg->reciver = $data;
}
}
也許另一個控制器
<?PHP
namespace App\Http\Controllers\StackOverFlow;
use App\Traits\HasReservationData;
class SecondController
{
use HasReservationData;
public function someMethod()
{
// You have the data here and manipulate the data however you want
$data = $this->reservationData();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/460256.html
標籤:php 拉拉维尔 laravel-5 雄辩 laravel-8
上一篇:PHP-根據第一個陣列的鍵屬性值組合兩個陣列-改進代碼
下一篇:根據年份重置為默認值
