Laravel查询数据库到刀片

时间:2016-09-05 13:45:22

标签: mysql laravel blade

可能查询DB进入Blade? 我从路线发送到刀片,所有MyUsers和预订。

在表格预订中我是列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 ::指令,但我只能发送stirng值而不是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 个答案:

答案 0 :(得分:2)

如果您要在刀片模板中执行复杂的操作,只需添加<?php ... ?>标记就可以执行此操作。 话虽如此,请不要,这是一种不好的做法,除了模板上的简单IF或迭代之外,你不应该有代码,查询或任何逻辑。 您应该执行逻辑并从实际代码中获取数据,而不是在视图上,您​​需要分离概念,视图中不应包含代码,只需向用户显示数据。

从我所看到的,问题似乎是你可能想要在每个(或许多)页面上显示某些东西,当然你不想在每个控制器中重复你的自我获取相同的数据

因此,我将向您推荐使用 View Composers 的此类问题。您可以在此处查看文档:{​​{3}}

如何使用视图作曲家

您在app/Providers中创建了一个新的提供者,您可以在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

我希望这会有所帮助。