在Laravel中创建数据库过滤器的最简单方法是?

时间:2019-04-23 22:12:48

标签: php sql laravel

嗨,我在这里有些束缚。我是个绿色开发人员,不知道从这里去哪里。我的背景基本上是HTML,CSS和JS,但是我现在尝试学习PHP,SQL,并从本质上为公司建立“零件目录”。

我有一个供公司使用的excel文件,我将其转换为CSV,然后导入到MYSQL数据库中。基本约定是类别,子类别和制造商。因此,例如Tires,Truck Tire,X公司。在对页面进行硬编码以使设计正确之后,我现在正尝试进入Laravel并构建一​​个更加多样化的应用程序。但是本质上,我想做的是让用户单击类别,子类别或制造商,然后通过SQL过滤显示所有这些项目。

因此,尽管我没有查看具体的编码建议,但如果有人请告诉我从哪里开始,我会很乐意。 Google搜索对我来说不是很有用,因为我发现很多事情都涉及创建新项目,编辑现有项目,而这些我根本不需要做。我只需要在用户单击特定列时在页面上显示数据库中的项目。

我看了几篇文章,包括分页和REST API,但在这一点上我还是有些头疼,所以我更希望在适当的方向上进行轻轻的推动,以开始执行此操作。我已经学习了Laravel的基础知识,学会了设置Laravel,为用户表添加种子,编写了几个@foreach循环,并弄清楚了视图/模型在某种程度上是如何工作的,但是在这方面我基本上是个菜鸟。

这是我在Laravel之前编写的PHP,用于对其进行硬编码,以便仅在名为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 :(得分:0)

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 完成后,您就可以雄辩地使用所需的所有数据。

在您的示例中,您可以这样做。 文件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

希望这对您有帮助