laravel's whenHas
方法提供了一种基于请求数据的存在来管理条件逻辑的方法。在处理可选的表单字段和有条件更新时,这是特别有益的,从而消除了重复的存在检查。 在特定字段触发唯一业务规则的情况下,此方法特别有用 - 例如,电子邮件通知首选项可能需要其他验证和存储。
考虑用户的电子邮件通知首选项:如果用户选择进入,则需要处理并保存其选择的频率。
的简洁示例:whenHas
// Simple presence check $request->whenHas('name', function ($name) { // Process name if present });这是一个更实用的示例,管理通知偏好:
// app/Controllers/PreferencesController.php <?php namespace App\Http\Controllers; use App\Models\UserPreferences; use Illuminate\Http\Request; class PreferencesController extends Controller { public function update(Request $request, UserPreferences $preferences) { $request->whenHas('email_frequency', function ($frequency) use ($preferences) { $preferences->update([ 'email_frequency' => $frequency, 'last_email_update' => now() ]); }); $request->whenHas('push_enabled', function ($enabled) use ($preferences) { $preferences->update([ 'push_enabled' => $enabled, 'push_updated_at' => now() ]); }, function () use ($preferences) { $preferences->update([ 'push_enabled' => false, 'push_updated_at' => now() ]); }); return response()->json([ 'message' => 'Preferences updated successfully', 'preferences' => $preferences->fresh() ]); } }>说明性用法:
// Input data (some preferences provided) { "email_frequency": "weekly" } // Resulting Response { "message": "Preferences updated successfully", "preferences": { "email_frequency": "weekly", "last_email_update": "2024-02-01T10:30:00.000000Z", "push_enabled": false, "push_updated_at": "2024-02-01T10:30:00.000000Z" } }
方法简化条件请求处理,导致更清洁,更可读的代码。whenHas
以上是处理Laravel中的请求数据存在的详细内容。更多信息请关注PHP中文网其他相关文章!