html在执行mysql查询后通过返回空标签而增加了三倍的大小 | 如何解决 - Laravel

9 浏览
0 Comments

html在执行mysql查询后通过返回空标签而增加了三倍的大小 | 如何解决 - Laravel

如何从未经身份验证的用户(公共页面)中列出寻找其名称的数据?我还想知道是否可能在内部通过ID将用户名转换为名称。

我有两个表,第一个是公司表,第二个是个人表。在我的代码中,我从URL中获取字符串“name”,然后在第一个表(公司表)中进行搜索,如果找到匹配项,我将该名称发送到视图中,在该视图中,我需要列出在个人表中存在的此用户的数据。

我不知道我做错了什么,但是代码会将HTML代码重复三次,并且不会返回我想要的方式。

我需要返回以下内容:




以下是代码:

路由器

Route::get('company/{name}', 'CompanyController@searchByName');

控制器

public function searchByName($name)
{
    $company = Company::where('name', $name)->first();
    return view('company.base.index', compact('company', 'name'));
}

视图





    
    
    
    
    
    
     
    


    @foreach($company as $company)
        select('div_class_1')->where('name', '=', $name)->get() }}">
        select('div_class_2')->where('name', '=', '$name')->get() }}">
        select('div_class_3')->where('name', '=', '$name')->get() }}">
        select('div_class_4')->where('name', '=', '$name')->get() }}">
    @endforeach      
    
    
    


返回结果
















0
0 Comments

问题出现的原因是返回的空标签导致HTML大小增加了三倍。解决方法是将需要在视图中使用的查询结果传递给视图。

在控制器中,需要传递给视图的查询结果包括personalities查询:

public function searchByName($name)
{
    $company = Company::where('name', $name)->firstOrFail();
    $personality = DB::table('personalities')->where('name', $name)->first();
    return view('company.base.index', compact('company', 'name', 'personality'));
}

视图部分的代码如下:

<div class="{{ $personality->div_class_1 }}">
<br>
<br>
</div>
<div class="{{ $personality->div_class_2 }}">
<br>
<br>
</div>
<div class="{{ $personality->div_class_3 }}">
<br>
<br>
</div>
<div class="{{ $personality->div_class_4 }}">
<br>
<br>
</div>

注意,这里不需要使用循环,因为没有需要迭代的内容。

另外,如果遇到类未找到的错误,需要在控制器类声明的上方添加命名空间use DB;

如果想要将id替代name,可以在URL中使用id或hashid。

如果希望防止表单中出现两个相同的名称,可以使用验证规则中的'unique'来实现。

最后,如果名称不存在,可以在控制器中使用firstOrFail()替代first(),这样如果找不到记录,将会抛出ModelNotFoundException异常。

0