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
|
class UserController extends Controller
|
||||||
{
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$users = User::all();
|
||||||
|
|
||||||
|
return view('users.index', compact('users'));
|
||||||
|
}
|
||||||
|
|
||||||
public function show(User $user)
|
public function show(User $user)
|
||||||
{
|
{
|
||||||
return view('users.show', compact('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::get('tasks', [TaskController::class, 'index']);
|
||||||
Route::post('tasks', [TaskController::class, 'store'])->middleware('auth');
|
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('users/{user}', [\App\Http\Controllers\UserController::class, 'show']);
|
||||||
|
|
||||||
Route::get('roles', [\App\Http\Controllers\RoleController::class, 'index']);
|
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::get('attachments', [\App\Http\Controllers\AttachmentController::class, 'index']);
|
||||||
|
|
||||||
Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store'])->middleware('auth');
|
Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store'])->middleware('auth');
|
||||||
|
|
||||||
|
|||||||
@@ -153,4 +153,21 @@ class RelationshipsTest extends TestCase
|
|||||||
'start_date' => now()->toDateString()
|
'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