我有一张类似的表 -
模特喜欢它 -
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class webinar_vote extends Model
{
protected $fillable = array('webinar_id');
protected $table = 'webinar_vote';
protected $primaryKey='webinar_id';
public $timestamps=false;
}
我想要的是,
像这样的模型查询 -
if('yes'==$input['yes_no_value'])
{
webinar_vote::firstOrCreate([
'webinar_id' => $input['uuid']
])->increment('vote_yes');
}
else
{
webinar_vote::firstOrCreate([
'webinar_id' => $input['uuid']
])->increment('vote_no');
}
但主要问题是我无法获得第一个投票值。
创建条目时,数据不会增加。
创建后,它可以正常工作。
我做错了什么?
有人可以帮我吗?
答案 0 :(得分:1)
我不确定我是否正确地想到这一点,但我感觉在使用firstOrCreate时,如果找不到匹配项并创建新记录,则会忽略任何链式方法。
如果使用firstOrNew
,则会在找到匹配项时返回模型实例,或者在找不到匹配项时返回模型的新实例。
$webinarVote = webinar_vote::firstOrNew(['webinar_id' => $input['uuid']]);
if('yes'== $input['yes_no_value'])
{
$webinarVote->vote_yes = $webinarVote->vote_yes + 1;
}
else
{
$webinarVote->vote_no = $webinarVote->vote_no + 1;
}
$webinarVote->save();
与您的问题无关,但值得注意的是,您的班级名称不符合现代php标准。您应该尝试使用符合PSR-1标准的Laravels内嵌您的命名约定。具体做法是:
类名必须在StudlyCaps中声明。