我可以更改Eloquent模型主键.
我想设置主键admin_id而不是'id'?
我知道我可以改变模型的表名
protected $table = "admin";
Run Code Online (Sandbox Code Playgroud)
主键有类似的东西吗?
任何人都可以帮助我如何保存多对多的关系?我有任务,用户可以有很多任务,任务可以有很多用户(多对多),我想要实现的是在更新表单管理员可以为多个用户分配特定任务.这是通过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) 有没有办法使用雄辩模型更新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) 这可能是一个简单的问题,但我无法弄清楚这一点.我试图通过电子邮件获取用户:
$user = User::whereEmail($email)->get();
Run Code Online (Sandbox Code Playgroud)
但是这会返回$ users的数组(维度为1).所以,如果我想得到这个名字,我必须这样做$user[0]['first_name'].
我尝试使用limit(1)或take(1)甚至使用->toArray()但没有区别.
我究竟做错了什么?
我试图在我的控制器中加载我的模型并尝试这样做:
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)
在控制器中加载模型然后返回其内容的正确方法是什么?
这可能很容易,但不知道如何.
我有一个表可以具有特定非键列字段的重复值.如何使用查询生成器或Eloquent编写SQL查询,该查询将获取具有该列的不同值的行?
请注意,我不是仅提取该列,而是与其他列值一起提取,因此distinct()可能无法正常工作.所以这个问题基本上可以是如何指定我想在查询中区分的列,现在不distinct()接受任何参数?
我正在使用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) 如何在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) 有没有办法轻松克隆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) 我正在使用以下attach语句在数据透视表中创建一行.
$music = Music::find(1);
$music->users()->attach(1);
Run Code Online (Sandbox Code Playgroud)
这在数据透视表中插入一行但是,它没有更新时间戳.时间戳仍为0000-00-00 00:00:00
有没有办法更新数据透视表中的时间戳.?
提前致谢,
eloquent ×10
laravel ×9
laravel-4 ×4
php ×3
builder ×1
clone ×1
laravel-5 ×1
laravel-5.2 ×1
model ×1
relationship ×1