およびmissing()
whenMissing()
柔軟なセットアップアップデートシステムの例を見てみましょう:
使用例:
// app/Controllers/SettingsController.php <?php namespace App\Http\Controllers; use App\Models\Settings; use Illuminate\Http\Request; class SettingsController extends Controller { public function update(Request $request, Settings $settings) { $updates = []; // 处理主题偏好设置 $request->whenMissing('theme', function () use (&$updates) { $updates['theme'] = [ 'mode' => 'system', 'color' => 'blue', ]; }, function () use (&$updates, $request) { $updates['theme'] = [ 'mode' => $request->input('theme.mode', 'light'), 'color' => $request->input('theme.color', 'blue'), ]; }); // 处理通知设置 if ($request->missing('notifications')) { $updates['notifications'] = [ 'email' => true, 'push' => false, 'frequency' => 'daily', ]; } else { $updates['notifications'] = $request->input('notifications'); } $settings->update($updates); return response()->json([ 'message' => 'Settings updated successfully', 'settings' => $settings->fresh(), ]); } }
// 最小数据输入 { "notifications": { "email": true, "push": true } } // 响应 { "message": "Settings updated successfully", "settings": { "theme": { "mode": "system", "color": "blue" }, "notifications": { "email": true, "push": true, "frequency": "daily" } } } // 完整数据输入 { "theme": { "mode": "dark", "color": "purple" }, "notifications": { "email": false, "push": true, "frequency": "weekly" } }
missing()
以上がLaravelの欠落要求データの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。