laravel语法错误意外'';在尝试连接模型中的字符串时


laravel syntax error unexpected '.' on attempted concatenation of string in model

我在Laravel工作,我有一个模型组,在那里我有验证规则。我正在尝试创建一个唯一的名称组,但仅限于特定年份。例如,如果我将.$this->year_groups替换为2016,下面的代码将非常有效。但是,当我试图通过连接.this->year_groups来添加要创建的组的实际年份时,我得到了一个语法错误:

Symfony''Component''Debug''Exception''FatalErrorException语法错误,意外的".",应为")"

我看了很多例子,它们(似乎)都是这样写的,我就是找不出哪里错了。我在想,也许这与这是一个数组有关。。。?

任何帮助都将不胜感激!!

型号:

<?php
use Illuminate'Auth'UserTrait; 
use Illuminate'Auth'UserInterface;
use Illuminate'Auth'Reminders'RemindableTrait;
use Illuminate'Auth'Reminders'RemindableInterface;
class Group extends Eloquent implements UserInterface,RemindableInterface   
{
    use UserTrait, RemindableTrait;
    protected $table = 'groups';
    protected $primaryKey = "id_groups"; 
    protected $fillable = array('name_groups','year_groups','grados_id_grados');
    //The error is in the following $rules    
    public static $rules = array(
          'year_groups'=> 'required',
          'name_groups'=> 'required|unique:groups,name_groups,NULL, id_groups,year_groups,' . $this->year_groups,         
          'grados_id_grados' => 'required'
      );

     public function grado()
     {
     return $this->belongsTo('Grado','grados_id_grados'); 
     }
     public function students()
     {
     return $this->belongsToMany('Student','group_student','id_group','id_student')->withTimestamps();
     }
 public function teachers()
     {
     return $this->belongsToMany('Teacher','group_subject_teacher','id_group','id_teacher')->withPivot('id_subject','year_groups')->withTimestamps();
  }  
}

在控制器中,我从存储方法调用验证:

public function store()
{
    $input = Input::all();
    $validation = Validator::make($input, Group::$rules);
    if($validation->passes()){
          $group = new Group;
          $group->name_groups = Input::get('name_groups');
          $group->year_groups = Input::get('year_groups');
          $group->grados_id_grados = Input::get('grados_id_grados');
          $group->save();
    }
 }

查看您的代码,$rules似乎是类的变量或属性。为属性赋值的方式是错误的,所以它是抛出错误的。查看下面的代码并相应地安排您的代码:-

class anyClass {
 private $year_groups = "2016";     
 public $rules = [];
 public function __construct(){
    $this->rules = array(
        'year_groups'=> 'required',
        'name_groups'=> 'required|unique:groups,name_groups,NULL,    id_groups,year_groups,'.$this->year_groups,
        'grados_id_grados' => 'required'
       );
 }
}

我将Model更改为:

use Illuminate'Auth'UserTrait;
use Illuminate'Auth'UserInterface;
use Illuminate'Auth'Reminders'RemindableTrait;
use Illuminate'Auth'Reminders'RemindableInterface;
class Group extends Eloquent implements UserInterface,RemindableInterface     
{
    use UserTrait, RemindableTrait;
    protected $table = 'groups';
    protected $primaryKey = "id_groups"; 
    protected $fillable = array('name_groups','year_groups','grados_id_grados');
      //This part I changed
    public static $rules = [];
    public static function _construct($year){
         $rules = array(
          'year_groups'=> 'required',
          'name_groups'=> 'required|unique:groups,name_groups,NULL, id_groups,year_groups,' . $year,
          'grados_id_grados' => 'required'   
      );
     return $rules;
    }

     public function grado()
    {
     return $this->belongsTo('Grado','grados_id_grados');
    }
    public function students()
    {
     return $this->belongsToMany('Student','group_student','id_group','id_student')->withTimestamps();
    }
    public function teachers()
   {
     return $this->belongsToMany('Teacher','group_subject_teacher','id_group','id_teacher')->withPivot('id_subject','year_groups')->withTimestamps();
   }     
}

然后在控制器中:

public function store()
{
    $input = Input::all();
    $validation = Validator::make($input,  Group::_construct(Input::get('year_groups')));
    if($validation->passes()){
          $group = new Group;
          $group->name_groups = Input::get('name_groups');
          $group->year_groups = Input::get('year_groups');
          $group->grados_id_grados = Input::get('grados_id_grados');
          $group->save();
  }
}