我发现有两种方法可以使用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)
这两种方法有什么区别?
我有一个带有选择输入的表单,验证很好,但是在失败时,选择字段不填充旧值 这里是我的选择字段
<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)
我怎么能解决这个问题?
因此,我在Github存储库中有以下分支:(遵循“ git flow”)
我已经知道如何创建分支别名,例如针对发行版。从技术上讲,composer.json每次我添加一个新的功能分支时都可以删除该文件,然后在准备将其合并到中时将其提交回来develop,但这将非常烦人并且容易忘记。
我的问题:如何隐藏Packagist的要素分支?
我可以包含一个.html文件而不是.phpLaravel 4 Blade吗?
我的代码:
@include('emails.templates.file')
//file is email.html
Run Code Online (Sandbox Code Playgroud)
file自动成为.php文件..
我有一个帖子表和评论表,评论属于帖子,我在帖子和评论模型中设置了关系.我根据每个帖子的评论数量对帖子进行排序,如下所示:
$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是一个未定义的方法.
今天我发现我正在工作的项目存在性能问题。我使用 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 行,如果使用这些连接,将返回完全相同的行。
我正在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()不浪费吗?还有更好的解决方案吗?
我们假设我有以下主题:
abcdef ghidef
Run Code Online (Sandbox Code Playgroud)
我希望匹配以def结尾的字结尾,而不是abc(在这种情况下,它将是ghidef).我怎么能匹配呢?
我用的时候:
(?<!abc)def
Run Code Online (Sandbox Code Playgroud)
我得到了第二名,def但我没有ghi来到这里.
当我对它进行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) 我正在创建一个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)
我不明白为什么。寻找澄清。
谢谢,耶
laravel ×6
php ×6
eloquent ×3
laravel-5 ×3
laravel-4 ×2
amazon-s3 ×1
attributes ×1
blade ×1
composer-php ×1
facade ×1
forms ×1
html ×1
include ×1
join ×1
laravel-5.4 ×1
laravel-5.5 ×1
laravel-form ×1
left-join ×1
model ×1
mysql ×1
packagist ×1
paginate ×1
pcre ×1
phpunit ×1
regex ×1
sql ×1
upload ×1
view ×1