小编Mar*_*łek的帖子

Laravel获取模型属性:两种方法之间的差异

我发现有两种方法可以使用Laravel获取/显示模型的属性.我可以在User.php例如创建一个函数:

public function getUsername() {
    return $this->username;
}
Run Code Online (Sandbox Code Playgroud)

然后显示如下的用户名:

{{{ Auth::user()->getUsername() }}}
Run Code Online (Sandbox Code Playgroud)

或者我可以简单地执行此操作而无需创建函数:

{{{ Auth::user()->username }}}
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别?

php attributes model laravel eloquent

5
推荐指数
3
解决办法
2万
查看次数

在失败时填充laravel中的旧html选择字段

我有一个带有选择输入的表单,验证很好,但是在失败时,选择字段不填充旧值 这里是我的选择字段

  <div class="control-group">
   <label class="control-label">Gender :</label>
    <div class="controls">
        <select  name="gender" value= "{{ Input::old('gender') }}">
            <option>Select</option>

                <option value="M">Male</option>
                <option value="F">Female</option>
        </select>
    </div>
</div> 
Run Code Online (Sandbox Code Playgroud)

我怎么能解决这个问题?

php forms laravel laravel-4 laravel-form

5
推荐指数
1
解决办法
5582
查看次数

作曲家/包装师忽略分支

因此,我在Github存储库中有以下分支:(遵循“ git flow”)

  • 掌握(最新稳定版:1.1.0)
  • 发展(2.0.0)
  • 功能/ feature_in_dev
  • 功能/ other_feature_in_dev
  • 版本1.0.0
  • 版本1..1.0

我已经知道如何创建分支别名,例如针对发行版。从技术上讲,composer.json每次我添加一个新的功能分支时都可以删除该文件,然后在准备将其合并到中时将其提交回来develop,但这将非常烦人并且容易忘记。

我的问题:如何隐藏Packagist的要素分支?

php composer-php packagist

5
推荐指数
1
解决办法
467
查看次数

Laravel Blade @include .html文件

包含刀片的HTML文件

我可以包含一个.html文件而不是.phpLaravel 4 Blade吗?

我的代码:

@include('emails.templates.file')
  //file is email.html
Run Code Online (Sandbox Code Playgroud)

file自动成为.php文件..

html view include laravel blade

5
推荐指数
2
解决办法
2万
查看次数

Laravel sortBy paginate

我有一个帖子表和评论表,评论属于帖子,我在帖子和评论模型中设置了关系.我根据每个帖子的评论数量对帖子进行排序,如下所示:

      $posts = Post::with('comments')->get()->sortBy(function($post) {
           return $post->comments->count();
      });
Run Code Online (Sandbox Code Playgroud)

我想知道我是如何分页这些排序的帖子的?

      $posts = Post::with('comments')->get()->sortBy(function($post) {
           return $post->comments->count();
      })->paginate(20);
Run Code Online (Sandbox Code Playgroud)

不起作用,并给我一个错误,说paginate是一个未定义的方法.

paginate laravel eloquent laravel-4 laravel-paginate

5
推荐指数
1
解决办法
6648
查看次数

MySQL - 使用左连接进行计数而不使用 where 性能

今天我发现我正在工作的项目存在性能问题。我使用 Laravel 框架,因此大多数查询不是手动生成的。

问题:

SELECT count(*) FROM table LEFT JOIN a ON table.a_id= a.id LEFT JOIN b ON table.b_id = b.id LEFT JOIN c ON table.c_id = c.id
Run Code Online (Sandbox Code Playgroud)

其中table执行了大约 100k 条记录,0,7s

SELECT count(*) FROM table
Run Code Online (Sandbox Code Playgroud)

执行0,01s

所以性能损失是巨大的。问题是 - 是否可以在查询中添加任何内容以使查询执行得更快(告诉 MySQL 在没有 WHERE 条件时忽略 LEFT JOINS),第二个问题 - 为什么 MySQL 在这种情况下使用联接joins都是LEFT而没有在哪里?

这里的问题是我向查询添加了许多条件,因此有时会使用许多 WHERE(最多 20-30 个条件),并且对于某些条件必须使用连接。

目前我无法检查索引(它们很可能会导致问题),但我仍然惊讶于 MySQL 在这种情况下不会忽略连接。

作为一种解决方法,在这种情况下,当没有使用条件时,或者对于大约 10-15 个不需要连接的条件,我不会使用左连接进行计数,但对于其他情况,我应该map为需要的连接创建。

AS @Gordon Linoff 在答案中提到连接不会创建任何额外的行,如果没有连接的查询生成 10 行,如果使用这些连接,将返回完全相同的行。

php mysql sql join left-join

5
推荐指数
1
解决办法
1094
查看次数

Laravel 5:如何将本地文件复制到Amazon S3?

我正在Laravel 5中编写代码来定期备份MySQL数据库.到目前为止我的代码看起来像这样:

    $filename = 'database_backup_'.date('G_a_m_d_y').'.sql';
    $destination = storage_path() . '/backups/';

    $database = \Config::get('database.connections.mysql.database');
    $username = \Config::get('database.connections.mysql.username');
    $password = \Config::get('database.connections.mysql.password');

    $sql = "mysqldump $database --password=$password --user=$username --single-transaction >$destination" . $filename;

    $result = exec($sql, $output); // TODO: check $result

    // Copy database dump to S3

    $disk = \Storage::disk('s3');

    // ????????????????????????????????
    //  What goes here?
    // ????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我在网上看到的解决方案建议我做一些类似的事情:

$disk->put('my/bucket/' . $filename, file_get_contents($destination . $filename));
Run Code Online (Sandbox Code Playgroud)

但是,对于大文件,使用file_get_contents()不浪费吗?还有更好的解决方案吗?

upload amazon-s3 laravel laravel-5 laravel-filesystem

5
推荐指数
4
解决办法
8775
查看次数

捕捉负面看后面

我们假设我有以下主题:

abcdef ghidef
Run Code Online (Sandbox Code Playgroud)

我希望匹配以def结尾的字结尾,而不是abc(在这种情况下,它将是ghidef).我怎么能匹配呢?

我用的时候:

(?<!abc)def
Run Code Online (Sandbox Code Playgroud)

我得到了第二名,def但我没有ghi来到这里.

php regex pcre

5
推荐指数
1
解决办法
59
查看次数

Laravel 5.5 PHPunit测试 - "尚未设置外观根".

当我对它进行try/catch时DB::Connection()->getPdo();,我得到错误没有设置外观根.Schema在我尝试添加try/catch之前,我相信它也发生在外墙上.当然,测试目录在app目录之外,我觉得它与它有关,但我还没有成功搞清楚.

以下是发生这种情况的测试类:

<?php

namespace Tests\Models;

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
use App\Models\Discussion;
use App\User;
use Business\Database\Model;
use Illuminate\Database\Schema\Blueprint;
use Tests\TestCase;

class DiscussionModelTest extends TestCase
{
    /**
     * Create the tables this model needs for testing.
     */
    public static function setUpBeforeClass()
    {
        try {
            DB::connection()->getPdo();
        } catch(\Exception $e) {
            die($e->getMessage());
        }

        Schema::create('discussions', function (Blueprint $table) {
            $table->integer('id');
            $table->integer('user_id');

            $table->foreign('user_id')->references('id')->on('users');
        });

        Schema::create('users', function (Blueprint $table) {
            $table->integer('id');
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

phpunit facade laravel laravel-5 laravel-5.5

5
推荐指数
2
解决办法
5482
查看次数

laravel在创建父模型后急于使用with()vs load()进行加载

我正在创建一个Reply模型,然后尝试返回具有所有者关系的对象。这是返回空对象的代码:

//file: Thread.php
//this returns an empty object !!??
public function addReply($reply)
{
    $new_reply = $this->replies()->create($reply);
    return $new_reply->with('owner');
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将with()方法换成load()方法以加载所有者关系,则可以得到预期的结果。那就是返回的回复对象及其相关的所有者关系:

//this works
{
    $new_reply = $this->replies()->create($reply);
    return $new_reply->load('owner');
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么。寻找澄清。

谢谢,耶

php eager-loading eloquent laravel-5 laravel-5.4

5
推荐指数
1
解决办法
1744
查看次数