标签: eloquent

在Eloquent中更改默认主键

我可以更改Eloquent模型主键.

我想设置主键admin_id而不是'id'?

我知道我可以改变模型的表名

protected $table = "admin";
Run Code Online (Sandbox Code Playgroud)

主键有类似的东西吗?

eloquent laravel-4

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

Laravel保存/更新多对多的关系

任何人都可以帮助我如何保存多对多的关系?我有任务,用户可以有很多任务,任务可以有很多用户(多对多),我想要实现的是在更新表单管理员可以为多个用户分配特定任务.这是通过html多选输入完成的

name="taskParticipants[]"
Run Code Online (Sandbox Code Playgroud)

这里的问题是,通过相同的形式(输入),您可以添加/删除用户,这就是我必须使用sync()的原因.也许我应该从头开始但不知道从哪里开始......

这是我的用户模型:

public function tasks()
{
    return $this->belongsToMany('Task','user_tasks');
}
Run Code Online (Sandbox Code Playgroud)

任务模型

public function taskParticipants()
{
    return $this->belongsToMany('User','user_tasks');
}
Run Code Online (Sandbox Code Playgroud)

TaskController

public function update($task_id)
{
    if (Input::has('taskParticipants'))
    {
        foreach(Input::get('taskParticipants') as $worker)
        {
            $task2 = $task->taskParticipants->toArray();
            $task2 = array_add($task2,$task_id,$worker);
            $task->taskParticipants()->sync(array($task2));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是表 任务id | title |截止日期的结构

user_tasks
id|task_id|user_id
Run Code Online (Sandbox Code Playgroud)

relationship laravel eloquent laravel-4

74
推荐指数
2
解决办法
7万
查看次数

Laravel Eloquent只有在做出更改后才会更新

有没有办法使用雄辩模型更新Laravel中的记录,只要对该记录进行了更改?我不希望任何用户一遍又一遍地请求数据库没有正当理由,只需按下按钮即可保存更改.我有一个javascript功能,根据页面中是否有更改,启用和禁用保存按钮,但我想知道是否可以确保在服务器端执行此类功能.我知道我可以自己完成它(意思是:没有吸引框架的内部功能)只是通过检查记录是否有变化,但在这样做之前,我想知道Laravel雄辩的模型是否已经处理好了那,所以我不需要重新发明轮子.

这是我用来更新记录的方式:

$product = Product::find($data["id"]);
$product->title = $data["title"];
$product->description = $data["description"];
$product->price = $data["price"];
//etc (string values were previously sanitized for xss attacks)
$product->save();
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent

69
推荐指数
3
解决办法
7万
查看次数

Laravel Eloquent - 获得一排

这可能是一个简单的问题,但我无法弄清楚这一点.我试图通过电子邮件获取用户:

$user = User::whereEmail($email)->get();
Run Code Online (Sandbox Code Playgroud)

但是这会返回$ users的数组(维度为1).所以,如果我想得到这个名字,我必须这样做$user[0]['first_name'].

我尝试使用limit(1)take(1)甚至使用->toArray()但没有区别.

我究竟做错了什么?

laravel eloquent

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

为什么我在Eloquent模型中调用方法时会得到'非静态方法不应该被静态调用'?

我试图在我的控制器中加载我的模型并尝试这样做:

return Post::getAll();
Run Code Online (Sandbox Code Playgroud)

得到了错误 Non-static method Post::getAll() should not be called statically, assuming $this from incompatible context

模型中的函数如下所示:

public function getAll()
{

    return $posts = $this->all()->take(2)->get();

}
Run Code Online (Sandbox Code Playgroud)

在控制器中加载模型然后返回其内容的正确方法是什么?

php laravel eloquent

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

如何在Laravel中获取非键列字段的不同值?

这可能很容易,但不知道如何.

我有一个表可以具有特定非键列字段的重复值.如何使用查询生成器或Eloquent编写SQL查询,该查询将获取具有该列的不同值的行?

请注意,我不是仅提取该列,而是与其他列值一起提取,因此distinct()可能无法正常工作.所以这个问题基本上可以是如何指定我想在查询中区分的列,现在不distinct()接受任何参数?

builder laravel eloquent

66
推荐指数
9
解决办法
13万
查看次数

雄辩的ORM laravel 5获取ID数组

我正在使用Eloquent ORM laravel 5.1,我想返回一个大于0的id数组,我的模型叫做test.

我试过了 :

$test=test::select('id')->where('id' ,'>' ,0)->get()->toarray();
Run Code Online (Sandbox Code Playgroud)

它返回:

Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) )
Run Code Online (Sandbox Code Playgroud)

但我希望结果是简单的数组,如:

Array ( 1,2 )
Run Code Online (Sandbox Code Playgroud)

php model laravel eloquent laravel-5

65
推荐指数
7
解决办法
9万
查看次数

Eloquent只获得一列作为数组

如何在laravel 5.2中使用eloquent只获得一列作为一个维数?

我试过了:

$array = Word_relation::select('word_two')->where('word_one', $word_id)->get()->toArray();
Run Code Online (Sandbox Code Playgroud)

但是这个给它作为2维数组,如:

array(2) {
      [0]=>
      array(1) {
        ["word_one"]=>
        int(2)
      }
      [1]=>
      array(1) {
        ["word_one"]=>
        int(3)
      }
    }
Run Code Online (Sandbox Code Playgroud)

但我希望得到它:

array(2) {
    [0]=>2
    [1]=>3
}
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-5.2

65
推荐指数
4
解决办法
9万
查看次数

克隆包含所有关系的雄辩对象?

有没有办法轻松克隆Eloquent对象,包括它的所有关系?

例如,如果我有这些表:

users ( id, name, email )
roles ( id, name )
user_roles ( user_id, role_id )
Run Code Online (Sandbox Code Playgroud)

除了在users表中创建一个新行,除了所有列都相同之外 id,它还应该在user_roles表中创建一个新行,为新用户分配相同的角色.

像这样的东西:

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

用户模型的位置

class User extends Eloquent {
    public function roles() {
        return $this->hasMany('Role', 'user_roles');
    }
}
Run Code Online (Sandbox Code Playgroud)

clone laravel eloquent laravel-4

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

在数据透视表中附加数据时,时间戳不会更新

我正在使用以下attach语句在数据透视表中创建一行.

$music = Music::find(1);
$music->users()->attach(1);
Run Code Online (Sandbox Code Playgroud)

这在数据透视表中插入一行但是,它没有更新时间戳.时间戳仍为0000-00-00 00:00:00

有没有办法更新数据透视表中的时间戳.?

提前致谢,

laravel eloquent laravel-4

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