我是 <table id="renewallist" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Insured's Name</th>
<th>Department</th>
<th>Policy No.</th>
<th>From</th>
<th>To</th>
<th>S.I.</th>
<th>Premium</th>
<th>Description</th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($allpol as $key => $value) { ?>
<tr>
<td><?php echo $value->firmname; ?></td>
<td><?php echo $value->deptname; ?></td>
<td class="brkwrd"><?php echo $value->polno; ?></td>
<td class="w75"><?php echo date("d-m-y", strtotime($value->startdate)); ?></td>
<td class="w75"><?php echo date("d-m-y", strtotime($value->enddate)); ?></td>
<td>Rs. <?php echo $value->si; ?></td>
<td>Rs. <?php echo $value->premium; ?></td>
<td class="brkwrd"><?php echo $value->description; ?></td>
<td><button type="button" class="btn btn-primary" data-toggle="modal" data-target=".pol" onclick='getpolinfo(<?php echo $value->polid; ?>)'>View Info</button></td>
</tr>
<?php } ?>
</tbody>
<tfoot>
<tr>
<th>Insured's Name</th>
<th>Department</th>
<th>Policy No.</th>
<th>From</th>
<th>To</th>
<th>S.I.</th>
<th>Premium</th>
<th>Description</th>
<th></th>
</tr>
</tfoot>
</table>
的新手,因此我的问题可能对某些人来说很奇怪。好吧,我的问题是如何在Laravel laravel
类中编写一个实体,在迁移后不会在数据库中创建任何字段。例如
Model
这是我的模型,现在我想添加另一个名为&#39; PagedListSize&#39;在我的模型中,但是我不想将其创建为数据库列。那我该怎么做?
例如,我熟悉在class JobseekerModel extends Model
{
use SoftDeletes;
protected $table='dbl_jobseekers';
protected $primaryKey='id';
protected $fillable=[
'FirstName',
'MiddleName',
'LastName',
'Dob',
'Education',
'DesireField',
'Skill',
'SpecialSkill',
'Experience',
'Location',
'HomeAddress',
'Salary',
'Comenteries',
'Resume'
];
protected $dates = ['deleted_at'];
}
中使用NotMapped
属性,其编写方式如
.Net Framework
那么,我该怎么做呢。在laravel有没有办法做到这一点?我正在处理[NotMapped]
public int PagedListSize {set; get;}
答案 0 :(得分:4)
您可以创建自定义Mutators以获得那种自定义属性,而无需将它们映射到Laravel中的数据库字段。
class Tag extends Model
{
public function getFullNameAttribute()
{
return $this->first_name.' '.$this->last_name;
}
public function setFullNameAttribute($value)
{
list($this->first_name, $this->last_name) = explode(' ', $value);
}
}
然后在初始化模型后可以像这样使用它:
$tag->full_name = "Christos Lytras";
echo $tag->first_name; // prints "Christos"
echo $tag->last_name; // prints "Lytras"
这是一个修补程序截图:
答案 1 :(得分:2)
您可以将受保护的属性添加到Laravel Model中,只要它们不与字段名称冲突就可以。此外,使用Laravel,迁移是决定数据库结构而不是模型,因此您不会冒风险自动创建字段(实际上,默认模型不使用开箱即用的属性)。
编辑:默认包User.php中的示例
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* You can add some properties here
* will require getter and/or setters
* does not need to be fillable
*/
protected $someLogicalProperty;
}
实际的db结构在迁移中定义(2014_10_12_000000_create_users_table.php):
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
如您所见,用户模型中甚至没有列出时间戳和令牌。定义时的所有可填充内容都将作为用户对象($user->name = 'Bob';
上的公共属性进行设置,但您也可以将其作为参数传递给create()/ save()继承的方法)。在Laravel中不直接访问实体,但是在这里可以根据需要进一步指定。
答案 2 :(得分:0)
在Laravel中实现这一目标的最佳方法是通过custom Mutators。此外,mutator可以配置为显示在模型的json或数组输出转储中。例如对于PagedListSize
,我们可以:
public functionGetPagedListSizeAttribute()
{
return #some evaluation;
}
protected $appends = array('pagedListSize');
这样,pagedListSize
不仅可以直接作为字段使用,而且只要模型为serialized作为Json或数组,它就可用。