Неизвестный столбец ‘User.first_name’ в ‘где предложение’ переполнение cakeStack

я имею tutor_students а также users Таблица. tutor_studentsсодержит id, tutor_id, student_id а также created, users содержать id, user_id, role_id, email, first_name, last_name, tutor_students Стол соединен между учеником и учеником. так что репетитор может видеть список своих учеников и добавлять новых учеников.

Мне удалось отобразить список учеников и добавить нового ученика в список учеников репетитора. но когда я хочу найти студента, будет ошибка:

Ошибка: SQLSTATE [42S22]: столбец не найден: 1054 неизвестный столбец
‘User.email’ в ‘предложении where’

SQL-запрос: SELECT TutorStudent,id, TutorStudent,tutor_id,
TutorStudent,student_id, TutorStudent,created ОТ
virlen,tutor_students КАК TutorStudent ГДЕ
TutorStudent,tutor_id НУЛЬ И User,email ЛАЙК
‘%Ka@mailinator.com%’

Мой контроллер:

public function admin_tutor_add_student($tutor_id = null)
{
$user_list = '';
$this->loadModel('TutorStudent');
$this->set('title_for_layout','User');
$this->User->bindModel(array(
'belongsTo'=>array(
'Standard'=>array(
'className'=>'Standard'
),
)
),false);

$this->User->id     =   $tutor_id;
/*form post and check conditions*/
// if ($this->request->is('post') || $this->request->is('put'))
if(!empty($this->request->data) && isset($this->request->data['User']['status1']))
{
// pr($this->request->data);die;
$action = $this->request->data['User']['pageAction'];
foreach ($this->request->data['User'] AS $value) {
if ($value != 0) {
$ids[] = $value;
}
}

// pr($ids);die;
if (!empty($this->request->data))
{
if (!isset($this->request->params['_Token']['key']) || ($this->request->params['_Token']['key'] != $this->request->params['_Token']['key']))
{
$blackHoleCallback = $this->Security->blackHoleCallback;
$this->$blackHoleCallback();
}
foreach($ids as $id)
{
if(!empty($id))
{
if($id != 1)
{
$shift = array();
$shift['TutorStudent']['tutor_id'] = $tutor_id;
$shift['TutorStudent']['student_id'] = $id;
$this->TutorStudent->save($shift);
$this->TutorStudent->id = false;
}
}
}

$this->Session->setFlash("Tutor has been added successfully", 'admin_flash_good');
$this->redirect(array('controller'=>'users', 'action'=>'subadmin_tutor',$tutor_id));

}
}

if (!isset($this->params['named']['page']))
{
$this->Session->delete('AdminSearch');
}
$email = '';
$first_name = '';
$role_id = '';
$status = '';
if (!empty($this->request->data))
{
$this->Session->delete('AdminSearch');
if (isset($this->request->data['User']['first_name']) && $this->request->data['User']['first_name'] != '')
{
$first_name = trim($this->request->data['User']['first_name']);
$this->Session->write('AdminSearch.first_name', $first_name);
}
if (isset($this->request->data['User']['email']) && $this->request->data['User']['email'] != '')
{
$email = trim($this->request->data['User']['email']);
$this->Session->write('AdminSearch.email', $email);
}

}

$filters    =   array('TutorStudent.tutor_id'=>$tutor_id);
if ($this->Session->check('AdminSearch'))
{
$keywords   =   $this->Session->read('AdminSearch');
foreach($keywords as $key=>$values)
{
if($key == 'email')
{
$email = $values;
$filters[] = array('User.'.$key.' LIKE'=>"%".$values."%");
}
if($key == 'first_name')
{
$first_name = $values;
$filters[] = array('User.'.$key.' LIKE'=>"%".$values."%");
}
}
}

$my_tutor_list = $this->TutorStudent->find('all',array('conditions'=>$filters));
if(!empty($my_tutor_list))
{
foreach($my_tutor_list as $key=>$value)
{
$user_list[] = $value['TutorStudent']['student_id'];
}
}

$this->paginate = array('User' => array(
'limit' =>Configure::read('App.PageLimit'),
'order' => array('User.id' => 'DESC'),
'conditions'=>array('User.id !='=>$user_list,'User.role_id'=>2),
)); //role_id 2 means student user

$student_list = $this->paginate('User');

// pr($student_list);die;
$this->loadModel('Standard');
$standards  =   $this->Standard->getStandardList();
$this->set(compact('standards'));
$this->set(compact('student_list','tutor_id','standard_id', 'User', 'email', 'first_name'));
$this->set('title_for_layout', __('User', true));
}

это мой файл просмотра:

<?php echo($this->Form->create('User', array('url'=>array('controller' => 'users', 'action' => 'tutor_add_student'))));?>
<div class="box-body table-responsive">
<div class="box box-danger">
<div class="full box-header">
<h3 class="box-title">Search</h3>
</div>
<div class="box-body">
<div class="row">
<div class="col-xs-2">
<label for="exampleInputPassword1">User Email</label>
<?php echo($this->Form->input('User.email', array('placeholder'=>"Tutor Email",'label' => false,'value'=>$email, 'div'=>false,'class'=>'form-control'))); ?>
</div>
<div class="col-xs-2">
<label for="exampleInputPassword1">First Name </label>
<?php echo($this->Form->input('User.first_name', array('placeholder'=>"First Name",'label' => false,'value'=>$first_name, 'div'=>false,'class'=>'form-control'))); ?>
</div>
<div class="col-xs-2" style="margin-top: 5px;">
<br /><?php echo($this->Form->submit('Search', array('div'=>false, 'class'=>'btn btn-primary pull-left')));?>
</div>

</div>
</div><!-- /.box-body -->
</div>

</div>
<?php echo($this->Form->end());?>

Это моя модель приложения для пользователя:

    <?php
/**
* Country
*
* PHP version 5
*
* @category Model
*
*/
// App::uses('AuthComponent', 'Controller/Component');
// App::uses('SessionComponent', 'Controller/Component');
App::uses('AppModel', 'Model');
class User extends AppModel{

//public $primaryKey = '_id';

/**
* Model name
* @var string
* @access public
*/
var $name = 'User';
/**
* Behaviors used by the Model
*
* @var array
* @access public
*/

var $actsAs = array(
'Multivalidatable'
);var $validationSets = array(
'login'=>   array(
'email'=>array(
'notEmpty' => array(
'rule'      => 'notEmpty',
'message'   =>  'Email address is required'
),
'R2'=>array(
'rule'=>array('maxLength', 50),
'message'=>'Email can be maximum 50 characters long.'
),
'email' =>  array(
'rule'  =>  'email',
'message'   =>  'Please provide a valid email address.'
),
),
'password'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'Password is required.'
),
'R3'=>array(
'rule'=>array('minLength', 6),
'message'=>'Password must be at least 6 characters long.'
),
'R4'=>array(
'rule'=>array('maxLength', 20),
'message'=>'Password must be at least 20 characters long.'
),
),
),
'add'=> array(
'first_name'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'First name is required.'
),
'R2'=>array(
'rule'=>array('maxLength', 255),
'message'=>'First Name can be maximum 255 characters long.'
),
'characters' => array(
'rule'     => array('custom', '/^[a-z]*$/i'),
'message'  => 'Alphabet characters only'
)
),
'last_name'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'Last name is required.'
),
'R2'=>array(
'rule'=>array('maxLength',255),
'message'=>'Last name can be maximum 255 characters long.'
),
'characters' => array(
'rule'     => array('custom', '/^[a-z]*$/i'),
'message'  => 'Alphabet characters only'
)
),
'standard_id'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'Standard is required.'
)
),
'role_id'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'Role is required.'
)
),
'specilization'=>array(
'R1' => array(
'rule'      => 'notEmpty',
'message'   =>  'Specilization is required.'
),
'R2'=>array(
'rule'=>array('maxLength', 255),
'message'=>'Specilization can be 255 characters long.'
),
),
'phone'=>array(
'R1' => array(
'rule'      => 'notEmpty',
'message'   =>  'Phone number is required.'
),
'notEmpty' => array(
'rule'      => 'numeric',
'message'   =>  'Phone number should be numeric'
),
'R2'=>array(
'rule'=>array('minLength', 8),
'message'=>'Phone number shuold be minimum 8 numbers long'
),
'R3'=>array(
'rule'=>array('maxLength', 12),
'message'=>'Phone number should be maximum 12 numbers long'
),
/* 'R4'=>array(
'rule'=>array('CheckPhoneVailidation'),
'message'=>'Phone no should be start with 82 to 87.'
),   */
),
'email'=>array(
'notEmpty' => array(
'rule'      => 'notEmpty',
'message'   =>  'Email address is required'
),
'R2'=>array(
'rule'=>array('maxLength', 50),
'message'=>'Email can be maximum 50 characters long.'
),
'isUnique'  =>  array(
'rule'  =>  'isUnique',
'message'   =>  'Email already exists.'
),
'email' =>  array(
'rule'  =>  'email',
'message'   =>  'Please provide a valid email address.'
),
),
'new_password'=>array(
'R1'=>array(
'rule'=>'notEmpty',
'message' => 'Password is required.'
),
'R3'=>array(
'rule'=>array('minLength', 6),
'message'=>'Password must be at least 6 characters long.'
),
'R4'=>array(
'rule'=>array('maxLength', 20),
'message'=>'Password must be at least 20 characters long.'
),
),
'confirm_password'=>array(
'identicalFieldValues' => array(
'rule' => array('identicalFieldValues', 'new_password'),
'message' => 'Password and confirm password mismatch'
),
'R1' => array(
'rule' => 'notEmpty',
'message' => 'Confirm password is required.'
)

),
'image' => array(
'R1' => array(
'rule' => array('checkextension'),
'message' => 'Please upload only image files'
)
),
)

);
}

0

Решение

Вы должны содержать User модель в вашем find вопрос: —

$this->TutorStudent->find('all', array(
'conditions' => $filters,
'contain' => array('User')
);
0

Другие решения

Таблица User не включена в запрос, вы должны попробовать что-то вроде:

SELECT TutorStudent.id, TutorStudent.tutor_id,  TutorStudent.student_id,  TutorStudent.created
FROM  virlen.tutor_students AS TutorStudent join
virlen.User as user
on user.id = tutorstudent.student_id
WHERE TutorStudent.tutor_id IS NULL AND User.email LIKE '%ka@mailinator.com%';

Это при условии, что ключ таблицы пользователя, используемый в tutor_student.student_id, является id, а не user_id, и в этом случае вы должны соответственно изменить свой код, чтобы он был таким: on user.user_id = tutorstudent.student_id

-1

предложение from должно быть

virlen.tutor_students AS TutorStudent,virlen.users AS User

Тогда ваш запрос должен быть

SELECT TutorStudent.id, TutorStudent.tutor_id, TutorStudent.student_id, TutorStudent.created FROM virlen.tutor_students AS TutorStudent,virlen.users AS User WHERE TutorStudent.tutor_id IS NULL AND User.email LIKE '%ka@mailinator.com%'

Ваш код должен быть

$my_tutor_list = $this->TutorStudent->find('all',array('conditions'=>$filters,'contain' => array('User')));
if(!empty($my_tutor_list))
{
foreach($my_tutor_list as $key=>$value)
{
$user_list[] = $value['TutorStudent']['student_id'];
}
}
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector