如何在多个记录中设置单元格的值 - laravel、ajax
how to set value of cell in multiple record - laravel, ajax
我使用AJAX机制来设置在这个table中创建或修改记录:
table:
id | item_type | item_id | creator_id | attitude
1 | exemplar | 3 | 33 | 1
2 | exemplar | 4 | 33 | 0
3 | exemplar | 3 | 35 | 1
通俗地说:一个用户有很多范例可供选择。给定的用户只能将一个范例设置为值 1。在这种特殊情况下,范例 #3 处于活动状态(态度 = 1)。我想将其 "attitude" 设置为 0 并在我具有以下代码的同一控制器方法中。
下面的代码为以前从未选择过的范例创建一条新记录,或者更改“态度”列的值。
$user_id = Auth::user()->id;
$countatt = $exemplar->attitudes()->where('creator_id', $user_id)->first();
if (!$countatt)
{
$countatt = new Userattitude;
$countatt->creator_id = $user_id;
$countatt->item_type = 'exemplar';
$countatt->item_id = $exemplar_id;
}
$countatt->attitude = $value; // $value = 1
$countatt->save();
要解决的问题:
1. 如何使用最佳实践将同一用户 (creator_id) 和 exemplar_id 的所有其他记录设置为 0
我最好的猜测是将以下 4 行放在上面引用的代码之前:
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id, $exemplar_id)->first();
$zeroing_attitude= $oldactive->attitudes()->first();
$zeroing_attitude->attitude = 0;
$zeroing_attitude->save();
;
以上解决方案仅在只有一个 'attitude' 值设置为 1 的范例的情况下有效。但将来我希望允许用户激活多个范例。我对 Eloquent 不够熟悉,无法重写多个活动示例的逻辑。
有时会没有活动的范例集,这意味着该集合将是空的
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id, $exemplar_id)->first();
在这种情况下,我应该如何跳过执行其余代码?通过如下添加 IF?
if($oldactive) {}
谢谢。
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id,$exemplar_id)->first();
foreach($oldactive->attitudes() as $zeroing_attitude){
$zeroing_attitude->attitude = 0;
$zeroing_attitude->save();
}
我使用AJAX机制来设置在这个table中创建或修改记录:
table:
id | item_type | item_id | creator_id | attitude
1 | exemplar | 3 | 33 | 1
2 | exemplar | 4 | 33 | 0
3 | exemplar | 3 | 35 | 1
通俗地说:一个用户有很多范例可供选择。给定的用户只能将一个范例设置为值 1。在这种特殊情况下,范例 #3 处于活动状态(态度 = 1)。我想将其 "attitude" 设置为 0 并在我具有以下代码的同一控制器方法中。
下面的代码为以前从未选择过的范例创建一条新记录,或者更改“态度”列的值。
$user_id = Auth::user()->id;
$countatt = $exemplar->attitudes()->where('creator_id', $user_id)->first();
if (!$countatt)
{
$countatt = new Userattitude;
$countatt->creator_id = $user_id;
$countatt->item_type = 'exemplar';
$countatt->item_id = $exemplar_id;
}
$countatt->attitude = $value; // $value = 1
$countatt->save();
要解决的问题: 1. 如何使用最佳实践将同一用户 (creator_id) 和 exemplar_id 的所有其他记录设置为 0
我最好的猜测是将以下 4 行放在上面引用的代码之前:
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id, $exemplar_id)->first();
$zeroing_attitude= $oldactive->attitudes()->first();
$zeroing_attitude->attitude = 0;
$zeroing_attitude->save();
;
以上解决方案仅在只有一个 'attitude' 值设置为 1 的范例的情况下有效。但将来我希望允许用户激活多个范例。我对 Eloquent 不够熟悉,无法重写多个活动示例的逻辑。
有时会没有活动的范例集,这意味着该集合将是空的
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id, $exemplar_id)->first();
在这种情况下,我应该如何跳过执行其余代码?通过如下添加 IF?
if($oldactive) {}
谢谢。
$oldactive= Exemplar::where('creator_id', $user_id)->where(exemplar_id,$exemplar_id)->first();
foreach($oldactive->attitudes() as $zeroing_attitude){
$zeroing_attitude->attitude = 0;
$zeroing_attitude->save();
}