Eloquent関数を呼び出す前にRequestパラメーターを指定してstore()またはupdate()メソッドを呼び出してリクエストに値を追加しているときに、Laravelで状況が発生しました。そのための方法はあります。
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
Eloquent関数を呼び出す前にRequestパラメーターを指定してstore()またはupdate()メソッドを呼び出してリクエストに値を追加しているときに、Laravelで状況が発生しました。そのための方法はあります。
function store(Request $request)
{
// some additional logic or checking
User::create($request->all());
}
array_add()
ヘルパーが使えませんか?$array = array_add($request->all(), 'new_key', $value);
:laravel.com/docs/5.2/helpers#method-array-addこれがあなたが探している種類のものではない場合、あなたの質問にもっと情報を提供できますか?
回答:
通常、Requestオブジェクトには何も追加したくないので、コレクションとput()
ヘルパーを使用することをお勧めします。
function store(Request $request)
{
// some additional logic or checking
User::create(array_merge($request->all(), ['index' => 'value']));
}
User::create($request->all() + ['index' => 'value']);
ただし、本当にRequestオブジェクトに何かを追加したい場合は、次のようにします。
$request->request->add(['variable' => 'value']); //add request
Alexey Mezenin
答えを参照してください:
彼の答えを使用している間、私はリクエストオブジェクトに直接何かを追加して使用する必要がありました:
$request->request->add(['variable', 'value']);
これを使用すると、2つの変数が追加されます。
$request[0] = 'variable', $request[1] = 'value'
あなたが私のような初心者で、連想配列が必要な場合、正しい方法は次のとおりです。
$request->request->add(['variable' => 'value']);
私があなたの時間を節約したことを願っています
PS:ありがとう@Alexey
、あなたは本当にあなたの答えを手伝ってくれました
Model
クラスでデータベースの値を次のように宣言しなかったために、なぜあなたの値がデータベースに挿入されないのかを探している人のために:protected $fillable = ['slug'];
$request->merge($array)
Laravel 5.2で機能を試しましたが、完全に機能しています。
例:
$request->merge(["key"=>"value"]);
laravel 5.6では、たとえば次のようにミドルウェア間でパラメーターを渡すことができます。
FirstMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
return $next($request->merge(['key' => 'value']));
}
SecondMiddleware
public function handle($request, Closure $next, ...$params)
{
//some code
dd($request->all());
}
$request->merge()
方法FTW!ありがとう。
以下のコードも使用できます
$request->request->set(key, value).
私にぴったりです。
私の観察に基づく:
$request->request->add(['variable' => 'value']);
渡された値があるため、POST、PUT、およびDELETEメソッドで(ほとんど)機能し_token
ます。そのうちの1つはです。以下の例のように。
<form action="{{ route('process', $id) }}" method="POST">
@csrf
</form>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
ただし、[以下のコード]は、渡された値がないため機能しません。実際には追加されません。
<a href='{{ route('process', $id) }}'>PROCESS</a>
public function process(Request $request, $id){
$request->request->add(['id' => $id]);
}
public function process($id){
$request = new Request(['id' => $id]);
}
または、を使用できますmerge
。これは、すべてのメソッド(GET、POST、PUT、DELETE)で機能するリクエスト値を初期化して追加$request->request->add(['variable' => 'value']);
できるため、実際には優れています。
public function process(Request $request, $id){
$request->merge(['id' => $id]);
}
タグ: laravel5.8.11
私が使用して調査した中で最も優れているのは、$ request-> merge([])(私のコードを確認してください)です。
public function index(Request $request) {
not_permissions_redirect(have_premission(2));
$filters = (!empty($request->all())) ? true : false;
$request->merge(['type' => 'admin']);
$users = $this->service->getAllUsers($request->all());
$roles = $this->roles->getAllAdminRoles();
return view('users.list', compact(['users', 'roles', 'filters']));
}
インデックス関数内の3行目を確認してください。
$request->all()
配列に追加しますか?