mirror of
https://github.com/10h30/Test-Eloquent-Relationships.git
synced 2026-06-05 15:07:42 +09:00
Task 9 - Filter users
This commit is contained in:
@@ -91,3 +91,11 @@ Test method `test_belongstomany_add()`.
|
||||
|
||||
---
|
||||
|
||||
## Task 9. Filter BelongsToMany Rows
|
||||
|
||||
In the route `/users`, the list should show only the users with at least one project. Fix the Controller to add this filter.
|
||||
|
||||
Test method `test_filter_users()`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -6,6 +6,13 @@ use App\Models\User;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$users = User::all();
|
||||
|
||||
return view('users.index', compact('users'));
|
||||
}
|
||||
|
||||
public function show(User $user)
|
||||
{
|
||||
return view('users.show', compact('user'));
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<ul>
|
||||
@foreach ($users as $user)
|
||||
<li>{{ $user->name }} ({{ $user->email }})</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@@ -21,6 +21,7 @@ Route::get('/', function () {
|
||||
Route::get('tasks', [TaskController::class, 'index']);
|
||||
Route::post('tasks', [TaskController::class, 'store'])->middleware('auth');
|
||||
|
||||
Route::get('users', [\App\Http\Controllers\UserController::class, 'index']);
|
||||
Route::get('users/{user}', [\App\Http\Controllers\UserController::class, 'show']);
|
||||
|
||||
Route::get('roles', [\App\Http\Controllers\RoleController::class, 'index']);
|
||||
@@ -32,3 +33,4 @@ Route::get('countries', [\App\Http\Controllers\CountryController::class, 'index'
|
||||
Route::get('attachments', [\App\Http\Controllers\AttachmentController::class, 'index']);
|
||||
|
||||
Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store'])->middleware('auth');
|
||||
|
||||
|
||||
@@ -153,4 +153,21 @@ class RelationshipsTest extends TestCase
|
||||
'start_date' => now()->toDateString()
|
||||
]);
|
||||
}
|
||||
|
||||
// TASK: show only the users who have at least one project
|
||||
public function test_filter_users()
|
||||
{
|
||||
$user1 = User::factory()->create();
|
||||
$user2 = User::factory()->create();
|
||||
$project = Project::create(['name' => 'Some project']);
|
||||
DB::table('project_user')->insert([
|
||||
'project_id' => $project->id,
|
||||
'user_id' => $user1->id,
|
||||
'start_date' => now()->toDateString()
|
||||
]);
|
||||
|
||||
$response = $this->get('/users');
|
||||
$response->assertSee($user1->email);
|
||||
$response->assertDontSee($user2->email);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user