php - Laravel find 模型方法返回错误结果

标签 php laravel-5.1

这段代码

FeesApplies::find(2)->toSql();

返回此查询

select * from `fees_applies`

为什么它忽略 id?

表中的主键没问题。 当我写的时候

FeesApplies::where('id',2); 

一切正常

最佳答案

使用 Model::where('id', $value) 语法时,where 方法将返回 Illuminate\Database\Eloquent 类型的对象\生成器。当使用语法 Model::find($value) 时,find 方法将返回 Eloquent 模型的实例。模型本身可用于查询数据库,但是当尝试将 Eloquent 实例直接转换为 SQL 而不添加任何其他条件(或使用返回 Builder 对象的方法)时,实例将默认选择无任何条件的所有记录。以下脚本可能有助于阐明您的情况中实际发生的情况:

// $fees1 will be an instance of Illuminate\Database\Eloquent\Model
$fees1 = FeesApplies::find(2);

// Asking the model instance to convert itself to SQL without any conditions
var_dump($fees1->toSql());

// Asking the model instance to retrieve a Builder object with a single condition
var_dump($fees1->where('id', 2)->toSql());

要求模型实例再次查询数据库是一个全新的查询,而不是在您用于实际检索实例的上一个查询的基础上“构建”。

关于php - Laravel find 模型方法返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39125154/

相关文章:

php - 图像旋转脚本

PHP usort() 期望参数 2 是一个有效的回调,而不是在一个类中

laravel - 使用 Laravel 5.1 授权方法时如何返回自定义 403 异常

php - 如何比 `object` 更好地访问 `$collection[0]->object` 数据

php - .ENV 文件可见

PHP - 添加到购物车按钮将空白添加到数据库

php - 从自动完成中获取选定的值、id

php - 如何将此 MySQL 查询转换为等效的 Laravel 5.4 Elequent/查询生成器查询?

php - 将 OAuth1 附加到 GuzzleHttp\Client

php - Laravel 5.1,如何在模型中建立动态数据库连接