在此片段中:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product_variant extends Model
{
protected $primaryKey='variant_id';
public $translationForeignKey = $this->primaryKey;
}
此规则不起作用:
public $translationForeignKey = $this->primaryKey;
我们如何访问与此类相同范围的变量?
答案 0 :(得分:2)
在构造函数中设置值或创建getter以返回值。
//选项1
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product_variant extends Model
{
protected $primaryKey='variant_id';
public $translationForeignKey = '';
// option 1
public function __construct()
{
$this->translationForeignKey = $this->primaryKey;
}
}
//选项2,你甚至不需要这个方法中的其他属性,除非它的值在执行期间可能会改变
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product_variant extends Model
{
protected $primaryKey='variant_id';
// option 2
public function getTranslationForeignKey()
{
return $this->primaryKey;
}
}
答案 1 :(得分:1)
在定义类时,您只能为类属性指定常量值。这里不允许使用变量。
您需要在构造函数中执行赋值部分。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Product_variant extends Model
{
protected $primaryKey='variant_id';
public $translationForeignKey;
public function __construct()
{
$this->translationForeignKey = $this->primaryKey;
}
}