dpqy77560 2014-08-30 03:20
浏览 22

我不能让我的PHP代码命中if语句?

Okay I have been struggling with this for like 3 hours trying different things and I cannot get it to work at all here is my function:

   public function endshiftdata_post() {
        Session::forget('success');
        Session::forget('error');

        $serial     = Input::get('hidden_serial');
        $game       = Game::find($serial);      
        $shiftsgame = ShiftsGames::find($serial);
        $sold          = $game->tickets_sold();     
        $cash          = Input::get('cash');
        $unsold        = Input::get('unsold');      
        $redeemed   = Input::get('redeemed');   
        $input      = Input::all();     

        $rules = array(
                                'cash'     => 'required|numeric',
                                'unsold'   => 'required|numeric',                                                                   
                                'redeemed' => 'required|numeric',                                   
                            );      

        $validation = Validator::make($input, $rules);

        if ($shiftsgame->cash_out == 0) {
            if ($validation->passes()) {
                $shiftsgame->cash_out        = $cash;
                $game->tickets_unsold         = $unsold;
                $game->tickets_sold          = $sold;
                $shiftsgame->prizes_redeemed = $redeemed;
                $game->prizes_redeemed       = $redeemed;
                $shiftsgame->end_time        = Shifts::currentTime();
                $game->end_shift_data  = 1;
                $game->save();
                $shiftsgame->save();

                Session::flash('success', "Successfully submitted data for " . $game->name . " (" . $game->serial . ")");
                return Redirect::route('shift.index');
            }
            else {
                Session::flash('error', "Make sure text boxes contain numbers only.");
                return Redirect::route('shift.index');
            }
        }
    }   

if I datadump the object it shows this here is the important info on it: array(9) { ["id"]=> int(40) ["user_id"]=> int(41) ["site_id"]=> int(1) ["serial"]=> string(8) "6743591 " ["start_time"]=> string(19) "2014-08-29 09:58:42" ["end_time"]=> string(19) "2014-08-29 09:59:39" ["cash_in"]=> int(10) ["cash_out"]=> int(500) ["prizes_redeemed"]=> int(500) } ["original":protected]=> array(9) { ["id"]=> int(40) ["user_id"]=> int(41) ["site_id"]=> int(1) ["serial"]=> string(8) "6743591 " ["start_time"]=> string(19) "2014-08-29 09:58:42" ["end_time"]=> string(19) "2014-08-29 09:59:39" ["cash_in"]=> int(10) ["cash_out"]=> int(500) ["prizes_redeemed"]=> int(500)

So as you can see the cash_out is 500 for two of them.

However, in my database I have 4 rows total...

And it does contain a 0 but obviously this datadump shows those are not getting included for some reason even though the serial number is the same which is what the ShiftGames::find($serial) should do...

Does anyone have any ideas what is going on? I am so stuck :(:(:( pleaseee help!

Edit for pierre:

Okay so here is my ShiftGames class:

class ShiftsGames extends Eloquent {

    protected $table = 'shiftsgames';
    protected $primaryKey = 'serial';

    /**
     *
     *
     * The attributes excluded from the model's JSON form.
     *
     *
     *
     * @var array
     *
     */
    protected $hidden = array();
    public $timestamps = false;

   public function getStartTime() {
      return $this->start;
   }

    public function getEndTime() {
        return $this->end;
    }


    public static function currentTime() {
        date_default_timezone_set('America/Chicago');
       $now = new DateTime;
       return $now->format('Y-m-d g:i:s');
    }

    public function scopeCurrent($query) {
       $query->where('user_id', '=', Auth::user()->id);
       $query->where('end_time', '=', null);
       return $query;
    }

    public static function endShift() {
       $query = Shifts::current()->first();
       $query->end_time = Shifts::currentTime();
       $query->save();
    }
}

What I did to fix it was switch the protected $primaryKey = 'serial'; to protected $primaryKey = 'id';

I than switched my function to have this:

Session::forget('success');
Session::forget('error');

$serial     = Input::get('hidden_serial');
$game       = Game::find($serial);      
$sold          = $game->tickets_sold();     
$cash          = Input::get('cash');
$unsold        = Input::get('unsold');      
$redeemed   = Input::get('redeemed');   
$input      = Input::all();     

$rules = array(
                        'cash'     => 'required|numeric',
                        'unsold'   => 'required|numeric',                                                                   
                        'redeemed' => 'required|numeric',                                   
                    );      

$validation = Validator::make($input, $rules);
        foreach (ShiftsGames::get() as $shiftgame) {
            if ($shiftgame->cash_out == 0 and $serial == $shiftgame->serial) {
                if ($validation->passes()) {
                    $shiftgame->cash_out         = $cash;
                    $game->tickets_unsold         = $unsold;
                    $game->tickets_sold          = $sold;
                    $shiftgame->prizes_redeemed  = $redeemed;
                    $game->prizes_redeemed       = $redeemed;
                    $shiftgame->end_time         = Shifts::currentTime();
                    $game->end_shift_data  = 1;
                    $game->save();
                    $shiftgame->save();

                    Session::flash('success', "Successfully submitted data for " . $game->name . " (" . $game->serial . ")");
                    return Redirect::route('shift.index');
                }
                else {
                    Session::flash('error', "Make sure text boxes contain numbers only.");
                    return Redirect::route('shift.index');
                }
            }
        }
    }   
}

Pierre does this look like an acceptable fix to you? or do you see problems with what I am doing still? It seems to be working.

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 (标签-MATLAB|关键词-多址)
    • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
    • ¥500 52810做蓝牙接受端
    • ¥15 基于PLC的三轴机械手程序
    • ¥15 多址通信方式的抗噪声性能和系统容量对比
    • ¥15 winform的chart曲线生成时有凸起
    • ¥15 msix packaging tool打包问题
    • ¥15 finalshell节点的搭建代码和那个端口代码教程
    • ¥15 Centos / PETSc / PETGEM
    • ¥15 centos7.9 IPv6端口telnet和端口监控问题