شما در این چالش باید سفری به اعماق لاراول داشته باشید و یک *driver* جدید برای اتصال به دیتابیس پیادهسازی کنید.
دیتابیس با نام `quera.json` بهصورت فایل *JSON* در اختیار شما قرار داده شده است که دارای یک جدول به نام *users* است. وظیفهی شما در این سؤال این است که اتصالی با این دیتابیس برقرار کنید و اطلاعات داخل جدول `users` را برگردانید.
<details class="green">
<summary>محتوای `quera.json`</summary>
```json
{
  "users": [
      {
        "name": "First",      
        "family": "User",
        "username": "quera1",
        "password": "123456789"
      },
      {
        "name": "Second",      
        "family": "User",
        "username": "quera2",
        "password": "123456789"
      },
      {
        "name": "Third",      
        "family": "User",
        "username": "quera3",
        "password": "123456789"
      },
      {
        "name": "Forth",      
        "family": "User",
        "username": "quera4",
        "password": "123456789"
      },
      {
        "name": "Fifth",      
        "family": "User",
        "username": "quera5",
        "password": "123456789"
      },
      {
        "name": "Sixth",      
        "family": "User",
        "username": "quera6",
        "password": "123456789"
      }
  ]
}
```
</details>
# جزئیات پروژه
*در این پروژه از Laravel 8 استفاده شده است.*
پروژهی اولیه را از  [این لینک](/contest/assignments/21628/download_problem_initial_project/74653/)  دانلود کنید.
<details class="grey">
<summary>ساختار فایلها</summary>
```
json_database
├── app
│   ├── Console
│   │   └── Kernel.php
│   ├── Exceptions
│   │   └── Handler.php
│   ├── Http
│   │   ├── Controllers
│   │   │   └── Controller.php
│   │   ├── Middleware
│   │   │   ├── Authenticate.php
│   │   │   ├── EncryptCookies.php
│   │   │   ├── PreventRequestsDuringMaintenance.php
│   │   │   ├── RedirectIfAuthenticated.php
│   │   │   ├── TrimStrings.php
│   │   │   ├── TrustHosts.php
│   │   │   ├── TrustProxies.php
│   │   │   └── VerifyCsrfToken.php
│   │   └── Kernel.php
│   ├── Models
│   │   └── User.php
│   └── Providers
│       ├── AppServiceProvider.php
│       ├── AuthServiceProvider.php
│       ├── BroadcastServiceProvider.php
│       ├── EventServiceProvider.php
│       └── RouteServiceProvider.php
├── bootstrap
│   ├── cache
│   │   ├── packages.php
│   │   └── services.php
│   └── app.php
├── config
│   ├── app.php
│   ├── auth.php
│   ├── broadcasting.php
│   ├── cache.php
│   ├── cors.php
│   ├── database.php
│   ├── filesystems.php
│   ├── hashing.php
│   ├── logging.php
│   ├── mail.php
│   ├── queue.php
│   ├── services.php
│   ├── session.php
│   └── view.php
├── database
│   ├── factories
│   │   └── UserFactory.php
│   ├── migrations
│   │   ├── 2014_10_12_000000_create_users_table.php
│   │   ├── 2014_10_12_100000_create_password_resets_table.php
│   │   └── 2019_08_19_000000_create_failed_jobs_table.php
│   └── seeders
│       └── DatabaseSeeder.php
├── public
│   ├── favicon.ico
│   ├── index.php
│   ├── robots.txt
│   └── web.config
├── resources
│   ├── css
│   │   └── app.css
│   ├── js
│   │   ├── app.js
│   │   └── bootstrap.js
│   ├── lang
│   │   └── en
│   │       ├── auth.php
│   │       ├── pagination.php
│   │       ├── passwords.php
│   │       └── validation.php
│   └── views
│       └── welcome.blade.php
├── routes
│   ├── api.php
│   ├── channels.php
│   ├── console.php
│   └── web.php
├── storage
│   ├── app
│   │   └── public
│   ├── framework
│   │   ├── cache
│   │   │   └── data
│   │   ├── sessions
│   │   ├── testing
│   │   └── views
│   └── logs
├── tests
│   ├── Feature
│   │   └── ExampleTest.php
│   ├── Unit
│   │   └── ExampleTest.php
│   ├── CreatesApplication.php
│   └── TestCase.php
├── README.md
├── artisan
├── composer.json
├── composer.lock
├── package.json
├── phpunit.xml
├── server.php
└── webpack.mix.js
```
</details>
<details class="brown">
<summary>راهاندازی پروژه</summary>
**برای اجرای پروژه، باید `php` و `composer` را از قبل نصب کرده باشید.**
+ ابتدا پروژهی اولیه را دانلود و از حالت فشرده خارج کنید.
+ دستور `composer install` را در پوشهی اصلی پروژه برای نصب نیازمندیها اجرا کنید.
</details>
پس از دریافت پروژه، در آدرس `database/quera.json`  دیتابیس را مشاهده خواهید کرد که اگر به فایل `config/database.php` مراجعه کنید، خواهید دید که *connection* ای به نام `json` وجود دارد که اتصال با این دیتابیس را فراهم میکند. حال وظیفه شما این است که این `connection` با درایور `json` را به هستهی لاراول اضافه کنید.
```php
'json' => [
    'driver' => 'json',
    'ds' => base_path() . '/database/',
    'database' => 'quera.json'
]
```
+ دقت کنید که نام `connection` حتماً باید `json` باشد.
پس از این که اتصال با دیتابیس را فراهم کردید، باید فقط کوئری `select` آن را بهگونهای پیادهسازی کنید تا اطلاعات جدول `users` را برگرداند. برای مثال، در کلاس `app/Http/Controllers/HomeController.php` دو دستور به صورت زیر نوشته شده است:
```php
public function index()
{
    $users = User::all();
    // $users = DB::table("users")->get();
    return view('index', compact('users'));
}
```
این دستورات باید محتوای جدول `users` را برگردانند.
**توجه:** نام جدول ورودی مهم نیست و باید همیشه محتوای جدول `users` برگردانده شود.
# آنچه باید آپلود کنید
**توجه**: شما تنها مجاز به اعمال تغییرات در پوشهی `app` هستید.
پس از اعمال تغییرات، کل پروژه به غیر از پوشهی `vendor` را *Zip* کرده و آپلود کنید.
توجه کنید که نام فایل *Zip* اهمیتی ندارد.