2017-07-29 134 views
0

我有这个StoreRequest与一些关于嵌套模型的验证。
ex。 $ rules ['replica.host'] ='必需';Laravel嵌套模型验证抛出QueryException

public function rules() 
{ 
    $rules = [ 
     'host' => 'required', 
     'port' => 'required', 
     'user' => 'required' 
    ]; 

    if($this->route('database')){ 
     $db = $this->route('database'); 

     $rules['name'] = 'required|unique:databases,name,'. $db->id; 
     $rules['database'] = 'required|unique_with:databases,host,' . $db->id; 
    }else{ 
     $rules['name'] = 'required|unique:databases'; 
     $rules['database'] = 'required|unique_with:databases,host'; 

     if($this->has('replica.name')){ 
      $rules['replica.name'] = 'required|unique:databases'; 
      $rules['replica.database'] = 'required|unique_with:databases,host'; 
      $rules['replica.host'] = 'required'; 
      $rules['replica.port'] = 'required'; 
      $rules['replica.user'] = 'required'; 
     } 
    } 

    return $rules; 
} 

我对数据库和副本(数据库太)一对一的关系, 但在商店我得到这个异常:

SQLSTATE [42S22]:列未找到:1054未知列' replica.name”在 'where子句'(SQL:SELECT COUNT(*)从databases其中replicaname =演示副本)

任何帮助吗?

回答

1

这是因为laravel使用嵌套值点.但我阅读本声明

此问题不会在laravel 5.3不复存在, 我们更换点属性名 用 - 开始前>任何检查。

这里阅读:https://github.com/laravel/framework/issues/14211

如果有可能请replica_name和同其他替代replica.name。不与laravel嵌套检查冲突。

+0

多数民众赞成它thanx很多! –