标签: eloquent

如何从Laravel中的表中获取所有行(也删除了软)?

要从表中获取所有行,我必须使用Model::all()但是(从充分的理由)这不会让我回到软删除的行.有没有办法用Eloquent来实现这个目标?

php laravel eloquent laravel-4

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

Laravel更新模型,具有属性的唯一验证规则

我有一个laravel User模型,它具有唯一的验证规则usernameemail.在我的存储库中,当我更新模型时,我重新验证字段,以便不会出现所需规则验证的问题:

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)

有没有办法优雅地解决这个问题?

php validation laravel eloquent

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

Laravel 5 Eloquent在和/或在子句中

我试图从表中获得多个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)

sql laravel eloquent

61
推荐指数
3
解决办法
13万
查看次数

Laravel 5.2 - 使用字符串作为Eloquent Table的自定义主键变为0

我正在尝试使用电子邮件作为我的表的主键,所以我雄辩的代码是 -

<?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.

有人可以帮忙吗?

php mysql laravel eloquent laravel-5

60
推荐指数
3
解决办法
8万
查看次数

首先或创造

我知道使用:

User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));
Run Code Online (Sandbox Code Playgroud)

检查用户是否先存在,如果不存在则创建它,但是如何检查?它是否检查所提供的所有参数或是否有指定特定参数的方法,例如,我可以检查电子邮件地址是否存在,而不是名称 - 因为两个用户可能具有相同的名称,但他们的电子邮件地址需要是独特.

laravel eloquent laravel-4

58
推荐指数
3
解决办法
8万
查看次数

如何合并两个雄辩的收藏?

我有一个问题表和一个标签表.我想从给定问题的标签中获取所有问题.因此,举例来说,我可能会在给定问题上附加标签"旅行","火车"和"文化".我希望能够获取这三个标签的所有问题.看起来棘手的是,问题和标签关系是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中,是否有更好的方法来获取多对多关系中的一行行?

php laravel eloquent laravel-collection

58
推荐指数
6
解决办法
8万
查看次数

更新时不触及时间戳(Laravel)

是否可以在不触及时间戳的情况下更新用户?

我不想完全禁用时间戳..

grtz

php laravel eloquent laravel-4

57
推荐指数
8
解决办法
4万
查看次数

Laravel 5.2 - pluck()方法返回数组

我正在尝试升级我的项目L5.1 - > L5.2.在升级指南中有一件事我不清楚:

" lists集合","查询"构建器和"Eloquent查询"构建器对象上的方法已重命名为pluck.方法签名保持不变.

没关系,重新命名refactoting lists()pluck()是没有问题.但是pluck()L5.0和L5.1中有用的方法是什么?

5.0文档:

从一行中检索单个列

$name = DB::table('users')->where('name', 'John')->pluck('name');
Run Code Online (Sandbox Code Playgroud)

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)

php query-builder laravel eloquent laravel-5.2

56
推荐指数
4
解决办法
12万
查看次数

如何使用Laravel的流畅查询构建器选择计数?

这是我使用流畅查询构建器的查询.

    $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查询但我想尽可能避免这种情况.任何帮助将不胜感激,提前谢谢!

mysql activerecord fluent laravel eloquent

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

Laravel,sync() - 如何同步数组并传递额外的数据透视字段?

官方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)

在后一示例中,仅添加了一个枢轴行.我不明白的是,如果要同步多行,如何关联其他数据透视表记录?

提前致谢.

php pivot sync laravel eloquent

54
推荐指数
4
解决办法
7万
查看次数