小编Kar*_*ill的帖子

如何让查询生成器将其原始SQL查询输出为字符串?

给出以下代码:

DB::table('users')->get();
Run Code Online (Sandbox Code Playgroud)

我想获取上面的数据库查询生成器将生成的原始SQL查询字符串.在这个例子中,它将是SELECT * FROM users.

我该怎么做呢?

php sql laravel laravel-4 laravel-query-builder

470
推荐指数
25
解决办法
52万
查看次数

Laravel 5中定制助手的最佳实践

我想创建辅助函数以避免在Laravel 5中的视图之间重复代码:

view.blade.php

<p>Foo Formated text: {{ fooFormatText($text) }}</p>
Run Code Online (Sandbox Code Playgroud)

它们基本上是文本格式化功能.我在哪里以及如何使用这些功能创建文件?

php laravel laravel-5 laravel-helper

426
推荐指数
16
解决办法
19万
查看次数

如何使用Laravel Eloquent创建多个Where子句查询?

我正在使用Laravel Eloquent查询构建器,我有一个查询,我希望WHERE在多个条件下有一个子句.它有效,但它并不优雅.

例:

$results = User::where('this', '=', 1)
    ->where('that', '=', 1)
    ->where('this_too', '=', 1)
    ->where('that_too', '=', 1)
    ->where('this_as_well', '=', 1)
    ->where('that_as_well', '=', 1)
    ->where('this_one_too', '=', 1)
    ->where('that_one_too', '=', 1)
    ->where('this_one_as_well', '=', 1)
    ->where('that_one_as_well', '=', 1)
    ->get();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,还是我应该坚持这种方法?

php laravel eloquent laravel-query-builder

341
推荐指数
12
解决办法
47万
查看次数

PHP中的正确存储库模式设计?

前言:我正在尝试在具有关系数据库的MVC架构中使用存储库模式.

我最近开始用PHP学习TDD,并且我意识到我的数据库与我的应用程序的其余部分非常接近.我已经阅读了有关存储库和使用IoC容器将其"注入"我的控制器的内容.很酷的东西.但是现在有一些关于存储库设计的实际问题.考虑以下示例.

<?php

class DbUserRepository implements UserRepositoryInterface
{
    protected $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function findAll()
    {
    }

    public function findById($id)
    {
    }

    public function findByName($name)
    {
    }

    public function create($user)
    {
    }

    public function remove($user)
    {
    }

    public function update($user)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

问题#1:字段太多

所有这些find方法都使用select all fields(SELECT *)方法.但是,在我的应用程序中,我总是试图限制我获得的字段数量,因为这通常会增加开销并减慢速度.对于那些使用这种模式的人,你如何处理这个?

问题#2:方法太多了

虽然这个类现在看起来不错,但我知道在现实世界的应用程序中我需要更多的方法.例如:

  • findAllByNameAndStatus
  • findAllInCountry
  • findAllWithEmailAddressSet
  • findAllByAgeAndGender
  • findAllByAgeAndGenderOrderByAge
  • 等等.

如您所见,可能存在非常长的可能方法列表.然后,如果您添加上面的字段选择问题,问题就会恶化.在过去,我通常只是将所有这些逻辑放在我的控制器中:

<?php

class MyController
{
    public function users()
    {
        $users = User::select('name, email, status') …
Run Code Online (Sandbox Code Playgroud)

php database repository repository-pattern laravel

265
推荐指数
4
解决办法
6万
查看次数

Laravel 4使用ORERE和OR进行Eloquent查询?

我怎么说 WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)

对于更复杂的查询,我应该使用原始SQL吗?

php laravel eloquent laravel-query-builder

254
推荐指数
11
解决办法
30万
查看次数

雄辩的收集:计数和检测空

这可能是一个微不足道的问题,但我想知道Laravel是否建议某种方法来检查返回的Eloquent集合是否$result = Model::where(...)->get()为空,以及计算元素的数量.

我们目前正在使用!$result检测空结果,是否足够?至于count($result)它是否真的涵盖了所有情况,包括空洞的结果?

laravel eloquent laravel-4 laravel-collection

242
推荐指数
8
解决办法
26万
查看次数

如何在Laravel 4中获取@if语句(刀片)中的当前URL?

我正在使用Laravel 4.我想@if使用Laravel的Blade模板引擎访问视图中的条件内的当前URL,但我不知道该怎么做.

我知道它可以使用类似的东西来完成<?php echo URL::current(); ?>但是在@if刀片声明中是不可能的.

有什么建议?

laravel laravel-4 laravel-blade

238
推荐指数
24
解决办法
33万
查看次数

如何在Laravel刀片模板中设置变量

我正在阅读Laravel Blade 文档,我无法弄清楚如何在模板中分配变量以供以后使用.我不能这样做,{{ $old_section = "whatever" }}因为那会回应"无论如何",我不希望如此.

我明白我能做到<?php $old_section = "whatever"; ?>,但那并不优雅.

在Blade模板中有更好,更优雅的方法吗?

php laravel laravel-4 laravel-blade

222
推荐指数
15
解决办法
29万
查看次数

未指定任何应用程序加密密钥

我是Laravel的新手,我正在尝试使用Artisan命令......

php artisan serve
Run Code Online (Sandbox Code Playgroud)

它显示......

Laravel开发服务器启动:http://127.0.0.1:8000

但是,它不会自动启动,当我手动输入http://127.0.0.1:8000时,它会显示以下错误:

RuntimeException未指定应用程序加密密钥.

有任何想法吗?我正在使用Laravel framework 5.5-dev.

php laravel laravel-5 artisan laravel-5.5

222
推荐指数
15
解决办法
26万
查看次数

Laravel 5 - 从URL中删除公共

我知道这是一个非常受欢迎的问题,但我无法为Laravel 5找到一个可行的解决方案.我一直在尝试从Codeigniter迁移很长一段时间,但这个错综复杂的安装过程一直让我失望.

我不想运行VM,这在项目之间切换时似乎很尴尬.

我不想将我的文档根目录设置为公共文件夹,这在项目之间切换时也很尴尬.

我试过了.htaccess mod_rewrite方法

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

这只是在compiled.php第7610行中给了我一个Laravel NotFoundHttpException.

当我不久前尝试L4时,我使用了将公用文件夹的内容移动到根目录的方法.L5的结构完全不同,按照相同的步骤完全打破了Laravel(服务器只返回一个空白页面).

在开发环境中是否有一种很好的方法可以删除"公共":

  1. 适用于L5
  2. 允许我轻松切换项目(我通常在任何时候工作2或3).

谢谢

**我正在使用MAMP和PHP 5.6.2

php .htaccess mamp laravel laravel-5

215
推荐指数
18
解决办法
20万
查看次数