标签: eloquent

在laravel中保存相关记录

我有用户,用户属于经销商.

在用户注册后,我正在尝试保存新用户和新经销商.

用户数据库有一dealership_id列,我想用新创建的经销商的ID填充该列.

这是我在UserControllerstore方法中的当前代码.

public function store()
{
    $user = new User();
    $user->email = Input::get('email');
    $user->password = Input::get('password');


    $dealership = new Dealership();
    $dealership->name = Input::get('dealership_name');

    $user->push();
    return "User Saved";

}
Run Code Online (Sandbox Code Playgroud)

尝试使用$user->push();用户数据会更新,但不会创建或更新经销商.

one-to-many laravel eloquent laravel-4

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

使用$ collection-> filter()过滤Eloquent集合数据

我正在尝试使用collection filter()方法过滤以下集合:

$collection = Word::all();
Run Code Online (Sandbox Code Playgroud)

JSON输出如下所示:

[
{
"id": "1",
"word": "dog",
"phonetic": "dog",
"mean": "pies",
"assoc": "some example text",
"author_id": "3",
"user_id": "3"
},
{
"id": "2",
"word": "sun",
"phonetic": "sun",
"mean": "s?o?ce",
"assoc": "lorem ipsun dolor sit amet",
"author_id": "3",
"user_id": "2"
}, ...
]
Run Code Online (Sandbox Code Playgroud)

但是,在过滤集合时:

$filtered_collection = $collection->filter(function($item)
    {
        if($item->isDog())
        {
            return $item;
        }
 });
Run Code Online (Sandbox Code Playgroud)

过滤后的集合JSON输出如下所示:

 {"1":
 {
 "id": "1",
 "word": "dog",
 "phonetic": "dog",
 "mean": "pies",
 "assoc": "some example text",
 "author_id": "3",
 "user_id": "3"
 },
 "2":
 { …
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-4

41
推荐指数
2
解决办法
6万
查看次数

雄辩的模型质量更新

如果我错了,请纠正我,但我认为在Eloquent模型中没有大规模更新这样的东西.

有没有办法在数据库表上进行批量更新而不为每一行发出查询?

例如,是否有静态方法,如

User::updateWhere(
    array('age', '<', '18'),
    array(
        'under_18' => 1 
        [, ...]
    )
);
Run Code Online (Sandbox Code Playgroud)

(是的,这是一个愚蠢的例子,但你得到的图片...)

为什么没有实现这样的功能?如果这样的事情出现,我是唯一一个会非常高兴的人吗?

我(开发人员),不喜欢实现它:

DB::table('users')->where('age', '<', '18')->update(array('under_18' => 1));
Run Code Online (Sandbox Code Playgroud)

因为随着项目的增长,我们可能会要求程序员将来更改表名,他们无法搜索和替换表名!

是否有这样的静态方法来执行此操作?如果没有,我们可以扩展Illuminate\Database\Eloquent\Model课程来完成这样的事情吗?

php laravel eloquent laravel-4

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

Eloquent列按键列出数组作为值?

所以我可以用Eloquent做到这一点:

$roles = DB::table('roles')->lists('title', 'name');
Run Code Online (Sandbox Code Playgroud)

但有没有办法让Eloquent获取每个不同键而不是一列的值数组?

例如,类似于以下内容:

$roles = DB::table('roles')->lists(['*', DB:raw('COALESCE(value, default_value)')], 'name');
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-4

41
推荐指数
3
解决办法
6万
查看次数

Laravel $ q->日期之间的()

我试图让我的cron来只得到Projects这是由于复发/在未来7天再次向发送提醒邮件.我刚刚发现我的逻辑不太合适.

我目前有查询:

$projects = Project::where(function($q){
    $q->where('recur_at', '>', date("Y-m-d H:i:s", time() - 604800));
    $q->where('status', '<', 5);
    $q->where('recur_cancelled', '=', 0);
});
Run Code Online (Sandbox Code Playgroud)

但是,我意识到我需要做的是:

Psudo SQL:

SELECT * FROM projects WHERE recur_at > recur_at - '7 days' AND /* Other status + recurr_cancelled stuff) */
Run Code Online (Sandbox Code Playgroud)

我将如何在Laravel 4中执行此操作,并使用DATETIME数据类型,我只使用时间戳完成此类操作.

更新:

管理使用下面的代码后,解决这个问题,也#1时帮助你可以拉的码位看他们断章取义.

$projects = Project::where(function($q){
    $q->where(DB::raw('recur_at BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) AND NOW()'));
    $q->where('status', '<', 5);
    $q->where('recur_cancelled', '=', 0);
});
Run Code Online (Sandbox Code Playgroud)

更新的问题:在Laravel/Eloquent中有更好的方法吗?

更新2:

在进一步测试后,第一个决议最终没有成功,我现在已经解决并测试了以下解决方案:

$projects = Project::where(function($q){
    $q->where('recur_at', '<=', Carbon::now()->addWeek());
    $q->where('recur_at', '!=', "0000-00-00 00:00:00");
    $q->where('status', …
Run Code Online (Sandbox Code Playgroud)

php mysql datetime-format laravel eloquent

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

如何在没有Laravel的情况下使用Eloquent ORM?

是否可以在没有Laravel的情况下使用Eloquent或者是否有人知道同样易于使用的ORM?

php laravel eloquent

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

如何在Laravel 4中手动创建一个新的空Eloquent Collection

如何在不使用查询生成器的情况下在Laravel 4中创建新的Eloquent Collection?

有一种newCollection()方法可以被覆盖,因为它只是在我们查询设置结果时才使用.

我正在考虑构建一个空集合,然后用Eloquent对象填充它.我不使用数组的原因是因为我喜欢Eloquent Collections方法,例如contains.

如果还有其他选择,我很乐意听听.

php laravel eloquent laravel-4

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

如何使用Laravel的Eloquent/Fluent将每一行设置为相同的值?

我需要更新所有行的一个数据库,以便在某一领域的所有他们等于单个值.这是一个例子.

假设我的数据库表是这样的:

id    |   data   |  confirmed
1     | someData |      0
2     | someData |      1
3     | someData |      0
Run Code Online (Sandbox Code Playgroud)

我想执行一个查询,将每行的确认字段设置为1.

我可以这样做:

$rows = MyModel::where('confirmed', '=', '0')->get();
foreach($rows as $row) {
    $row->confirmed = 0;
    $row->save();
}
Run Code Online (Sandbox Code Playgroud)

但似乎会有更好的方法吗?单个查询只会说"将每行'确认'字段设置为1".

Laravel的Eloquent/Fluent中是否存在这样的查询?

fluent laravel eloquent laravel-3

39
推荐指数
3
解决办法
4万
查看次数

一次种植多行laravel 5

我正在尝试播种我的用户表.如果我这样尝试2行,它就会失败.如果我只使用单个数组而不是$ users数组中的2个数组来创建一些假数据,它就可以正常工作.

我做错了什么,这样做的正确方法是什么?

class UserTableSeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();

        $users = [
            ['id' => 1, 'name' => 'Stephan de Vries', 'username' => 'stephan', 'email' => 'stephan-v@gmail.com', 'password' => bcrypt('carrotz124')],
            ['id' => 2, 'name' => 'John doe', 'username' => 'johnny', 'email' => 'johndoe@gmail.com', 'password' => bcrypt('carrotz1243')],
        ];

        User::create($users);
    }

}
Run Code Online (Sandbox Code Playgroud)

php schema seed laravel eloquent

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

Laravel Eloquent:渴望加载多个嵌套关系

什么laravel说:

$books = App\Book::with('author.contacts')->get();
Run Code Online (Sandbox Code Playgroud)

我需要的是这样的事情

$books = App\Book::with('author[contacts,publishers]')->get();
Run Code Online (Sandbox Code Playgroud)

我们渴望在关系中加载多个关系.

这可能吗?

eager-loading laravel eloquent

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