Laravel 查询数据库到 Blade

Posted

技术标签:

【中文标题】Laravel 查询数据库到 Blade【英文标题】:Laravel Query DB into Blade 【发布时间】:2017-01-12 21:46:27 【问题描述】:

是否可以将数据库查询到 Blade 中? 我从路由发送到刀片、所有 MyUsers 和 Booking。

进入餐桌预订我有列 id_user,

我有这个代码

    @foreach 
    $booking->id

this down Foreach is not optimized - it's possible improve it?
@foreach ($Myusers as $Myuser)
@if ($myuser == $booking->id_user)
$myuser->name 
@endif
@endforeach


    @endforeach

我尝试过使用 Blade::directive,但我只能发送搅拌值而不是 php 值。我有这个代码

Blade::directive('DettagliUtente', function($expression) 
    print_r($expression); 
but echo the string "$booking->id_user" but I want the value $booking->iduser
   $dettaglioutente=\App\Utenti::find($var)->first();
   return "<?php echo '".$dettaglioutente->name."'; ?>";
        );


@DettagliUtente ($booking->id_user)

请帮帮我

【问题讨论】:

能否请您重新表述您的问题?就我个人而言,我不明白你想在这里实现什么。 查看下面的答案 【参考方案1】:

如果您要在刀片模板中做一些复杂的事情,您只需添加一个&lt;?php ... ?&gt; 标记并在那里执行即可。 话虽如此,请不要,这是一种不好的做法,除了简单的 IF 或模板上的迭代之外,您不应该有代码、查询或任何逻辑。 您应该从实际代码中执行逻辑并获取数据,而不是在视图上,您​​需要分离概念,视图中不应包含代码,只是将数据呈现给用户。

据我所知,问题似乎是您可能希望在每个(或许多)页面上显示一些内容,当然您不希望在每个控制器中重复您自己以获取相同的数据。

所以,我将针对您使用 View Composers 的这类问题向您提出建议。您可以在此处查看文档:https://laravel.com/docs/5.3/views#view-composers

如何使用视图作曲家

您在app/Providers 中创建一个新的Provider,您可以将其命名为ViewComposerProvider,在boot() 方法中您定义一个视图编写器:

View::composer('partials.my-books', 'App\Http\ViewComposers\MyBooksComposer');

然后您创建该类并创建一个函数compose(View $view),您可以在那里获取数据、执行任何逻辑并最终将该数据发送到视图:

$view->with('books', $my_list_of_books);

然后,您需要做的就是将该部分模板包含到任何模板中,Laravel 将看到它需要为该部分模板调用视图编写器。

您的基本模板:

...
@include('partials.my-books')
...

你的部分模板app/resources/views/partials/my-books.blade.php

<ul>
@foreach($books as $book)
    <li>$book->name</li>
@endforeach
</ul>

注意:请记住,您需要将您的提供商ViewComposerProvider 注册到您的config.app

我希望这会有所帮助。

【讨论】:

感谢您的回复,但我将 User->name 从 booking->id_users 链接

以上是关于Laravel 查询数据库到 Blade的主要内容,如果未能解决你的问题,请参考以下文章

PHP,Laravel 连接两个查询的结果,并有选择地显示在 html/blade 表中

在 Laravel 中查询用户的多对多关系

使用 Laravel 8(和 Jetstream)将自定义数据传递到 login.blade.php

Laravel 8 和 Livewire - 查询不起作用

如何从多个控制器获取数据到 Laravel Blade 视图中?

如何从循环中获取值到刀片 - laravel