original_string: public function hasOne($model, $our_field = UNDEFINED, $field_class = UNDEFINED)
      {
          if ($field_class === UNDEFINED) {
              $field_class = $this->defaultHasOneFieldClass;
          }
  
          if ($our_field === UNDEFINED) {
              // guess our field
              $tmp = $this->app->normalizeClassName($model, 'Model');
              $tmp = new $tmp(); // avoid recursion
              $refFieldName = ($tmp->table ?: strtolower(get_class($this))).'_id';
          } else {
              $refFieldName = $our_field;
          }
          $displayFieldName = preg_replace('/_id$/', '', $our_field);
  
          $field = $this->addField($refFieldName);
  
          if (!@$this->controller->supportExpressions) {
              $expr = $this->addExpression($displayFieldName, $model, $field_class)
                  ->setModel($model)
                  ->setForeignFieldName($refFieldName);
              $this->_references[$refFieldName] = $model;
  
              return $expr;
          }
  
          return $field;
      }
code: public function hasOne($model, $our_field = UNDEFINED, $field_class = UNDEFINED)
      {
          if ($field_class === UNDEFINED) {
              $field_class = $this->defaultHasOneFieldClass;
          }
  
          if ($our_field === UNDEFINED) {
              // guess our field
              $tmp = $this->app->normalizeClassName($model, 'Model');
              $tmp = new $tmp(); // avoid recursion
              $refFieldName = ($tmp->table ?: strtolower(get_class($this))).'_id';
          } else {
              $refFieldName = $our_field;
          }
          $displayFieldName = preg_replace('/_id$/', '', $our_field);
  
          $field = $this->addField($refFieldName);
  
          if (!@$this->controller->supportExpressions) {
              $expr = $this->addExpression($displayFieldName, $model, $field_class)
                  ->setModel($model)
                  ->setForeignFieldName($refFieldName);
              $this->_references[$refFieldName] = $model;
  
              return $expr;
          }
  
          return $field;
      }
code_tokens: public function hasOne ( $ model , $ our_field = UNDEFINED , $ field_class = UNDEFINED ) { if ( $ field_class === UNDEFINED ) { $ field_class = $ this -> defaultHasOneFieldClass ; } if ( $ our_field === UNDEFINED ) { // guess our field $ tmp = $ this -> app -> normalizeClassName ( $ model , 'Model' ) ; $ tmp = new $ tmp ( ) ; // avoid recursion $ refFieldName = ( $ tmp -> table ? : strtolower ( get_class ( $ this ) ) ) . '_id' ; } else { $ refFieldName = $ our_field ; } $ displayFieldName = preg_replace ( '/_id$/' , '' , $ our_field ) ; $ field = $ this -> addField ( $ refFieldName ) ; if ( ! @ $ this -> controller -> supportExpressions ) { $ expr = $ this -> addExpression ( $ displayFieldName , $ model , $ field_class ) -> setModel ( $ model ) -> setForeignFieldName ( $ refFieldName ) ; $ this -> _references [ $ refFieldName ] = $ model ; return $ expr ; } return $ field ; }
docstring: {{{ Relational methods
docstring_tokens: {{{ Relational methods