迁移条件声明不起作用laravel
问题描述:
我有一点问题。我有一个表,如果字段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
遗体的球员,但它不应该。
我应该如何创建一个条件语句使其工作?
答
我做到了,就像这样:
public function queryThing($query)
{
return $query->where('owntype', 0);
}
您好,有人可以帮忙吗?这很重要,请。 – Adrian