小编Jar*_*zyk的帖子

如何使用Laravel Query Builder从子查询中进行选择?

我想使用Eloquent ORM通过以下SQL获得价值.

- SQL

 SELECT COUNT(*) FROM 
 (SELECT * FROM abc GROUP BY col1) AS a;
Run Code Online (Sandbox Code Playgroud)

然后我考虑了以下内容.

- 代码

 $sql = Abc::from('abc AS a')->groupBy('col1')->toSql();
 $num = Abc::from(\DB::raw($sql))->count();
 print $num;
Run Code Online (Sandbox Code Playgroud)

我正在寻找更好的解决方案.

请告诉我最简单的解决方案.

sql query-builder laravel eloquent laravel-4

82
推荐指数
6
解决办法
11万
查看次数

Laravel如何使用Query Builder返回单列值

我想使用SQL Query中的数据,在这里进一步解释它是我的代码:

    $myquery = DB::table('attendances')->select('user_id')->where('date_only', '=', $newdate)->orderBy('logon','asc')->get();

    $myquery->user_id;
Run Code Online (Sandbox Code Playgroud)

现在我希望我的$ myquery的值为USER_ID的值,如果我使用了上面的代码,我会收到错误 - $ myquery-> user_id;

php laravel

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

Laravel验证:存在附加列条件 - 自定义验证规则

在Laravel中指定存在的验证规则时,是否有一种引用另一个字段的方法?我希望能够说输入a必须存在于表a中,输入b必须存在于表b中,并且表b中列x的值必须等于输入a.

最好用例子解释:

public $rules = array(
    'game_id' => 'required|exists:games,id',
    'team1_id' => 'required|exists:teams,id,game_id,<game_id input value here>',
    'team2_id' => 'required|exists:teams,id,game_id,<game_id input value here>'
);
Run Code Online (Sandbox Code Playgroud)

因此,根据我的验证规则,我希望能够确保:

  • game_id存在于games表(id字段)中
  • team1_id存在于teams表(id字段)中,game_id列(在teams表中)必须等于game_id输入的值.
  • 如上所述 team2_id

所以,如果在我的形式,我进入1game_id,我希望能够确保两者的球队表中的记录team1_id,并team2_id具有价值1game_id.

我希望这是有道理的.

谢谢

php validation laravel laravel-4 laravel-validation

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

Eloquent中查找和获取的区别

我创建了3个表:users,roles和role_user.

用户模型:

public function roles()
{
    return $this->belongsToMany('Role');
}
Run Code Online (Sandbox Code Playgroud)

没关系,我可以得到关系

$roles = User::find(1)->roles;
Run Code Online (Sandbox Code Playgroud)

但是当我改变的时候

$roles = User::where('name', 'Test')->get()->roles;
Run Code Online (Sandbox Code Playgroud)

Undefined property: Illuminate\Database\Eloquent\Collection::$roles

那是错误的还是'找','哪里'有区别?如果我想在哪里使用获取关系,我该怎么办?

laravel eloquent

11
推荐指数
1
解决办法
1万
查看次数

Laravel MySQL如何以与whereIn子句相同的顺序排序结果

我有两个查询,第一个给我一个id数组,这是一个特定的顺序.然后我将这个ID数组传递给第二个查询,如下所示:

 Operation::whereIn('id', $ids)->get();
Run Code Online (Sandbox Code Playgroud)

但是当我输出该查询的结果时,顺序已经改变,如果数组$ ids类似于(4,2,6,9),这是我想要结果的顺序,输出将给我2 ,4,6,9.我怎么能避免这种情况?

mysql eloquent laravel-4

8
推荐指数
2
解决办法
4446
查看次数

Laravel:如何获得嵌套的hasMany关系的平均值(hasManyThrough)

我有三张桌子:

products:   id|name|description|slug|category_id|...
reviews:    id|product_id|review_text|name|email|...
review_rows id|review_id|criteria|rating
Run Code Online (Sandbox Code Playgroud)

审查表存储审阅文本,审阅的编写者并具有外部product_id密钥.review_rows表存储不同标准的评级,例如:

----------------------------------------
| id |  criteria  | rating | review_id |
----------------------------------------
|  1 |  price     | 9      | 12        |
----------------------------------------
|  2 |  service   | 8      | 12        |
----------------------------------------
|  3 |  price     | 6      | 54        |
----------------------------------------
|  4 |  service   | 10     | 54        |
----------------------------------------
Run Code Online (Sandbox Code Playgroud)

审核行使用review_id外键链接到审阅表.我已经建立了这样的模型关系:

Product   -> hasMany   -> Review
Review    -> belongsTo -> Product
Review    -> hasMany   -> ReviewRow
ReviewRow -> belongsTo -> Review …
Run Code Online (Sandbox Code Playgroud)

php mysql relationship laravel eloquent

7
推荐指数
1
解决办法
4552
查看次数

关闭PHP5.5与5.6的后期静态绑定

为什么new static在闭包中(在类static方法中)等于new selfPHP5.5,而它在PHP5.6中是否正确绑定?

鉴于:

abstract class Parent {
    public function __construct($something)
    {
        $this->something = $something;
    }

    public static function make($array)
    {
        return array_map(function ($el) {
            return new static($el);
        }, $array);
    }
}

class Child extends Parent {

}
Run Code Online (Sandbox Code Playgroud)

然后

Child::make($someArray); 
// PHP5.5 FatalError: cannot instantiate abstract class Parent
// PHP5.6 works fine, as expected
Run Code Online (Sandbox Code Playgroud)

在5.5中,这将按预期工作:

public static function make($array)
{
    $child = get_called_class();

    return array_map(function ($el) use ($chlid) {
        return new $child($el);
    }, $array); …
Run Code Online (Sandbox Code Playgroud)

php php-5.6 php-5.5

6
推荐指数
1
解决办法
628
查看次数

如何在Laravel 4中插入相关的多态模型

在Laravel 4中,我有一个"Meta"模型,可以通过"object_id"和"object_type"属性与任何对象相关联.例如:

id: 1
object_id: 100
object_type: User
key: favorite_ice_cream
value: Vanilla
Run Code Online (Sandbox Code Playgroud)

我通过在http://laravel.com/docs/eloquent#polymorphic-relations中描述的morphTo()和morphMany()正常工作,所以我可以通过以下方式拉取用户及其所有元素:

$ user = User :: with('meta') - > find(100);

我现在要弄清楚的是:有一种简单的方法可以将meta保存到我的用户身上吗?如:

$user = User::find(100);
$user->meta()->save(['key' => 'hair_color', 'value' = 'black']);
Run Code Online (Sandbox Code Playgroud)

无论在元上正确设置object_id和object_type需要保存什么.由于我已经定义了模型中的关系,我不确定是否会自动完成.我随机尝试了几种不同的方法,但每次都崩溃了.

php laravel eloquent laravel-4

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

Laravel通过急切加载缓存查询

在执行以下操作时,Laravel缓存机制可以正常工作:

$users = User::remember(10)->get();
Run Code Online (Sandbox Code Playgroud)

但在做的时候:

$users = User::with('posts','addresses')->remember(10)->get();
Run Code Online (Sandbox Code Playgroud)

它不会缓存整个查询集,特别是连接查询(eager loading).

有没有办法缓存上面示例中执行的所有查询?谢谢!

mysql caching laravel eloquent laravel-4

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

Eloquent 模型上的保留字

我有一个产品模型和一个属性模型。

产品有属性。

问题是我无法使用 Attributes 作为扩展 eloquent 的 Product 类的成员,因为 eloquent 已经使用了它。有没有解决的办法?

class Product extends Model 
{
    protected $attributes;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent

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