要从表中获取所有行,我必须使用Model::all()但是(从充分的理由)这不会让我回到软删除的行.有没有办法用Eloquent来实现这个目标?
我有一个laravel User模型,它具有唯一的验证规则username和email.在我的存储库中,当我更新模型时,我重新验证字段,以便不会出现所需规则验证的问题:
public function update($id, $data) {
$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray());
$user->save();
return $user;
}
Run Code Online (Sandbox Code Playgroud)
这在测试中失败了
ValidationException: {"username":["The username has already been taken."],"email":["The email has already been taken."]}
Run Code Online (Sandbox Code Playgroud)
有没有办法优雅地解决这个问题?
我试图从表中获得多个where和/或子句的结果.
我的SQL语句是:
SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)
Run Code Online (Sandbox Code Playgroud)
我怎么能用Laravel Eloquent来解决这个问题?
我在Laravel的代码是:
$BType = CabRes::where('m_Id', '=', '46')
->where('t_Id', '=', '2')
->where('Cab', '2')
->orWhere('Cab', '=', '4')
->get();
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用电子邮件作为我的表的主键,所以我雄辩的代码是 -
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class UserVerification extends Model
{
protected $table = 'user_verification';
protected $fillable = [
'email',
'verification_token'
];
//$timestamps = false;
protected $primaryKey = 'verification_token';
}
Run Code Online (Sandbox Code Playgroud)
我的DB就像这样 -
但如果我这样做 -
UserVerification::where('verification_token', $token)->first();
Run Code Online (Sandbox Code Playgroud)
我得到这个 -
{
"email": "sdfsdf@sdfsdf.sdf",
"verification_token": 0,
"created_at": "2016-01-03 22:27:44",
"updated_at": "2016-01-03 22:27:44"
}
Run Code Online (Sandbox Code Playgroud)
因此,验证令牌/主键变为0.
有人可以帮忙吗?
我知道使用:
User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));
Run Code Online (Sandbox Code Playgroud)
检查用户是否先存在,如果不存在则创建它,但是如何检查?它是否检查所提供的所有参数或是否有指定特定参数的方法,例如,我可以检查电子邮件地址是否存在,而不是名称 - 因为两个用户可能具有相同的名称,但他们的电子邮件地址需要是独特.
我有一个问题表和一个标签表.我想从给定问题的标签中获取所有问题.因此,举例来说,我可能会在给定问题上附加标签"旅行","火车"和"文化".我希望能够获取这三个标签的所有问题.看起来棘手的是,问题和标签关系是Eloquent中定义为manyToMany的多对多关系.
我想过尝试合并问题集合如下:
foreach ($question->tags as $tag) {
if (!isset($related)) {
$related = $tag->questions;
} else {
$related->merge($tag->questions);
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎不起作用.似乎没有合并任何东西.我正确地尝试了吗?另外,在Eloquent中,是否有更好的方法来获取多对多关系中的一行行?
是否可以在不触及时间戳的情况下更新用户?
我不想完全禁用时间戳..
grtz
我正在尝试升级我的项目L5.1 - > L5.2.在升级指南中有一件事我不清楚:
"
lists集合","查询"构建器和"Eloquent查询"构建器对象上的方法已重命名为pluck.方法签名保持不变.
没关系,重新命名refactoting lists()到pluck()是没有问题.但是pluck()L5.0和L5.1中有用的方法是什么?
从5.0文档:
从一行中检索单个列
Run Code Online (Sandbox Code Playgroud)$name = DB::table('users')->where('name', 'John')->pluck('name');
pluck()L5.2中旧方法的替代方法是什么?
更新:
例:
var_dump(DB::table('users')->where('id', 1)->pluck('id'));
Run Code Online (Sandbox Code Playgroud)
L5.1:
// int(1)
Run Code Online (Sandbox Code Playgroud)
15.2:
// array(1) { [0]=> int(1) }
Run Code Online (Sandbox Code Playgroud) 这是我使用流畅查询构建器的查询.
$query = DB::table('category_issue')
->select('issues.*')
->where('category_id', '=', 1)
->join('issues', 'category_issue.issue_id', '=', 'issues.id')
->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
->group_by('issues.id')
->order_by(DB::raw('COUNT(issue_subscriptions.issue_id)'), 'desc')
->get();
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我通过连接表中的计数进行排序.这工作正常.但是,我希望这个计数随我的选择而返回.
这是我的原始续集查询,工作正常.
Select issues.*, COUNT(issue_subscriptions.issue_id) AS followers
FROM category_issue JOIN Issues ON category_issue.issue_id = issues.id
LEFT JOIN issue_subscriptions ON issues.id = issue_subscriptions.issue_id
WHERE category_issue.category_id = 1
GROUP BY issues.id
ORDER BY followers DESC
Run Code Online (Sandbox Code Playgroud)
如何使用Laravel的流畅查询构建器进行此选择?我知道我可以使用原始的SQL查询但我想尽可能避免这种情况.任何帮助将不胜感激,提前谢谢!
官方Laravel文档具有以下sync()功能:
$user->roles()->sync( array( 1, 2, 3 ) );
Run Code Online (Sandbox Code Playgroud)
您还可以将其他数据透视表值与给定ID相关联:
$user->roles()->sync( array( 1 => array( 'expires' => true ) ) );
Run Code Online (Sandbox Code Playgroud)
在后一示例中,仅添加了一个枢轴行.我不明白的是,如果要同步多行,如何关联其他数据透视表记录?
提前致谢.
eloquent ×10
laravel ×10
php ×7
laravel-4 ×3
mysql ×2
activerecord ×1
fluent ×1
laravel-5 ×1
laravel-5.2 ×1
pivot ×1
sql ×1
sync ×1
validation ×1