访问器和构造函数的问题
我在model里,定义了一个属性,protected $user_id = ‘’”;
然后控制器调用这个model的时候传入了一个user_id,然后我在__construct里面获取传入的user_id,将他赋值给$user_id。
然后我又在model里定义了一个访问器,但是在访问器里无法获取$user_id
应该是访问器先被初始化,如何解决这个问题呢
下面是model代码
下面是控制器代码
示例代码
<?php
//MODEL文件
class Good extends Model
{
protected $table = 'goods';
public $timestamps = false;
public $user_id = 0;
protected $appends = ['viprice',];
public function construct($user_id) {
parent::construct();
return $this->user_id = $user_id;
}
public function getVipriceAttribute($val){
//先用$user_id去获取客户信息,获取客户的等级
$userInfo = (new User())->getUserInfo($this->user_id);
//然后获取根据用户的等级返回不同的商品价格
switch ($userInfo->level){
case 1:
return $this->vipPrice_1;//vipPrice_1是数据库中goods表中的字段
case 2:
return $this->vipPrice_2;//vipPrice_2是数据库中goods表中的字段
default:
return 9999;//如果没有会员ID直接返回上商品9999的价格
}
}
//这里是获取商品信息
public function goodInfo($gid)
{
//通过商品ID返回商品的信息
return $this->where('id',$gid)->first();
}
}
//控制器文件
class HomeController extends Controller
{
public function item()
{
$gid = $_GET['gid']; //获取商品ID
$user_id = 1; //模拟会员ID,不能用session获取,因为是api接口,没有session
$good = (new Good($user_id))->goodInfo($gid);
//输出当前用户的商品价格
dd($good->viprice);
}
}
推荐文章: