Самый простой способ создать фильтр базы данных в Laravel? - PullRequest
1 голос
/ 24 апреля 2019

Эй, ребята, я здесь немного затруднен. Я зеленый разработчик над головой и не знаю, куда идти отсюда. В основном я знаком с HTML, CSS и JS, но сейчас я пытаюсь выучить PHP, SQL и по сути создать «каталог запчастей» для компании.

У меня есть файл Excel, который компания использует, который я преобразовал в CSV, а затем импортировал в базу данных MYSQL. Основное соглашение - категория, подкатегория и производитель. Так, например, Tyres, Truck Tire, Company X. После жесткого кодирования страницы, чтобы получить правильный дизайн, я сейчас пытаюсь перейти в Laravel и создать более разнообразное приложение. Но, по сути, я пытаюсь сделать так, чтобы пользователь щелкнул по категории, подкатегории или производителю, а затем отобразил все эти элементы с помощью фильтрации SQL.

Так что, хотя я не смотрю на конкретные советы по кодированию, я был бы рад, если бы кто-нибудь показал мне, с чего начать. Поиск в Google не очень полезен для меня, так как большая часть того, что я нахожу, связана с созданием новых элементов, редактированием существующих элементов, что мне вообще не нужно делать. Мне просто нужно отображать элементы из базы данных на странице, когда пользователь щелкает этот конкретный столбец.

Я просмотрел несколько статей, в том числе Pagination и REST API, но на данный момент это даже немного у меня в голове, поэтому я больше ищу нежный толчок в правильном направлении, с чего начать, чтобы начать делать это. , Я изучил основы Laravel, научился настраивать Laravel, заполнять пользовательскую таблицу, писать пару циклов @foreach и выяснять, как представления / модели работают в некоторой степени, но я в основном нуб в этом отношении.

Это PHP, который я написал до Laravel, чтобы жестко его кодировать, чтобы просто отображать что-либо под производителем под названием Trucklite. Я написал JS-функцию для изменения основного изображения, нажав на миниатюру, но я не стану публиковать это.

$conn = new mysqli($servername, $username, $password, $dbname);
$keyword = "Trucklite";

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql="SELECT part_number, item_description FROM parts WHERE 
 item_description LIKE '%{$keyword}%' LIMIT 40";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<div class='catalogue-card'>".
        "<div class='catalogue-card-description'>".
            $row["item_description"].
        "</div>".

        "<div class='catalogue-card-inner'>".
            "<br /><br />".
            "<a id='image-link' href='/img/".
             $row['part_number'].
             " A.jpeg'".
             " data-fancybox='gallery'><img class='full' id='".
             // $row["part_number"].
             "full-image".
             "'".
             "style='height:200px;' src='/img/".
             $row["part_number"].
             " A.jpeg'></a>".

            "<br /><br />".

            "<img class='thumb' style='height: 50px;' src='/img/".
              $row['part_number'].
              " A.jpeg'>".

            "<img class='thumb' style='height: 50px;' src='/img/".
              $row["part_number"].
              " B.jpeg'>".

            "<img class='thumb' style='height: 50px;' src='/img/".
              $row["part_number"].
              " C.jpeg'>".

            "<img class='thumb' style='height: 50px;' src='/img/".
              $row["part_number"].
              " D.jpeg'>".

            "<br /><br />".

            "<span>Part #: </span>".
              $row["part_number"].
              "<br/><br />".
        "</div>".
    "</div>";
    }
} else {
    echo "0 results";
}

Так что, конечно, это действительно не элегантный способ демонстрации визуально, но не намного дальше. Буду признателен за любую помощь, и простите меня, если я не знаю, но я действительно расстроен и не уверен, что делать дальше.

1 Ответ

0 голосов
/ 24 апреля 2019

Laravel использует Eloquent ORM, поэтому вам не нужно бороться со всем этим подключением к БД.Чтобы настроить laravel с вашей базой данных, вы должны исправить свой файл .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=yourDB
DB_USERNAME=root
DB_PASSWORD=root

Следующим шагом будет создание вашей модели php artisan make:model Part После того, как вы сделаете это, вы сможете использовать все необходимые данные через eloquent.

В вашем примере вы можете сделать так.файл Part.php (модель)

добавьте сюда несколько кодов

public static function getParts($part)
{
   $data = Part::where('item_description', like, '%'.$part.'%')->take(40)->get();
   return $data;
}

И в вашем контроллере просто добавьте сверху

use App\Part;

И вы можете вызывать у вас функциюи рендеринг данных

public function ShowParts($part)
{
 $data = Part::getParts($part);
 return view('your_view', compact('data'));
}

Также внесите некоторые изменения в ваш файл маршрута web.php

Route::get('/getpart/{part}', 'Controller@ShowParts');

После создания файла вида и использования ваших данных через @ foreach

@foreach($data as $row)
<div>{{$row->part_number}}</div>
@endforeach

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...