2015-11-04 58 views
0

我有一点问题。我有一个表,如果字段owntype的值为0,字段owner属性为表播放器的ID,如果值为1,则应将字段owner的值赋给0,如果字段owntype为2,然后从桌上车辆分配车主ID,我知道该怎么做才能使其工作?下面我列出了表格,呼叫模型没有问题,因为我可以做所有支持的迁移表。迁移条件声明不起作用laravel

事表条件语句:

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateThingsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('things', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('object')->default(0); 
      $table->tinyInteger('category')->default(0); 
      $table->string('name'); 
      $table->integer('owner')->unsigned()->nullable(); 
      $table->integer('owntype')->default(0); 
      $table->integer('number')->default(0); 
      $table->integer('value1')->default(0); 
      $table->integer('value2')->default(0); 
      $table->integer('damage')->default(1); 
      $table->float('pos_x'); 
      $table->float('pos_y'); 
      $table->float('pos_z'); 
      $table->tinyInteger('pos_vw'); 
      $table->integer('use')->default(0); 
      $table->timestamp('date'); 
      $table->timestamps(); 

      if(Schema::hasColumn('things', 'owntype') == 0) 
      { 
       $table->foreign('owner')->references('id')->on('players')->onDelete('cascade'); 
      } 
      elseif(Schema::hasColumn('things', 'owntype') == 1) 
      { 
       Schema::table('things', function ($table) { 
        return $table->integer('owner')->unsigned()->nullable()->change(); 
       }); 
      } 
      elseif(Schema::hasColumn('things', 'owntype') == 2) 
      { 
       $table->foreign('owner')->references('id')->on('vehicles')->onDelete('cascade'); 
      } 

     }); 




    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('things'); 
    } 
} 

事情模式:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Thing extends Model 
{ 
    protected $table = 'things'; 

    protected $fillable = ['name', 'owner', 'owntype']; 

    public function player() 
    { 
     return $this->belongsTo('App\Player', 'owner')->withTimestamps(); 
    } 

    public function vehicle() 
    { 
     return $this->belongsTo('App\Vehicle', 'owner')->withTimestamps(); 
    } 
} 

机型号:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Player extends Model 
{ 
    protected $table = 'players'; 

    protected $fillable = 
    [ 
     'name', 
     'age', 
     'gid', 
     'sex', 
     'skin', 
     'from', 
     'history', 
     'online' 
    ]; 

    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 

    public function formatName($name) 
    { 
     $nick = str_replace("_", " ", $name); 
     return $nick; 
    } 

    public function checkActive($active) 
    { 
     if($active == 0) 
     { 
      $showActive = '<span class="label label-error">Zablokowana</span>'; 
      return $showActive; 
     } 


     if($active == -999) 
     { 
      $showActive = '<span class="label label-default"><s>Zbanowana</s></span>'; 
      return $showActive; 
     } 


     if($active == 1) 
     { 
      $showActive = '<span class="label label-success">Aktywna</span>'; 
      return $showActive; 
     } 

    } 

    public function formatTime($time) 
    { 
     $hours = floor($time/60); 
     $minutes = $time - ($hours * 60); 
     return $hours.'h '.$minutes.'min.'; 
    } 

    public function formatSex($sex) 
    { 
     if($sex == 0) 
     { 
      $man = 'Mężczyzna'; 
      return $man; 
     } 
     else 
     { 
      $girl = 'Kobieta'; 
      return $girl; 
     } 
    } 

    public function formatKP($kp) 
    { 
     if($kp == 1) 
     { 
      $showKP = '<span class="label label-warning">Gracz premium!</span>'; 
      return $showKP; 
     } 
    } 

    public function ban() 
    { 
     return $this->hasOne('App\Ban', 'player_name', 'name'); 
    } 

    public function busines() 
    { 
     return $this->belongsTo('App\Busines', 'bmember'); 
     return $this->belongsTo('App\Busines', 'bleader'); 
    } 

    public function organization() 
    { 
     return $this->belongsTo('App\Organization', 'member'); 
     return $this->belongsTo('App\Organization', 'leader'); 
    } 

    public function house() 
    { 
     return $this->hasMany('App\House', 'owner'); 
    } 

    public function thing() 
    { 
     return $this->hasMany('App\Thing', 'owner'); 
    } 

    public function login() 
    { 
     return $this->hasMany('App\Login', 'nickname', 'name'); 
    } 
} 

车辆型号:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Vehicle extends Model 
{ 
    protected $table = 'vehicles'; 

    public function thing() 
    { 
     return $this->hasMany('App\Thing', 'owner'); 
    } 
} 

当我创建一个物体并将其分配给场所所有者1并将场地owntype留为空白时,玩家可以看到所有物品。

但是,当我创建一个新的项目与字段拥有者和价值2一个的1价值owntype,这个问题与ID 1遗体的球员,但它不应该。

我应该如何创建一个条件语句使其工作?

+0

您好,有人可以帮忙吗?这很重要,请。 – Adrian

回答

0

我做到了,就像这样:

public function queryThing($query) 
{ 
    return $query->where('owntype', 0); 
}