#mysql #laravel #laravel-4 #laravel-5 #laravel-5.2
#mysql #laravel #laravel-4 #laravel-5 #laravel-5.2
Вопрос:
Я пытаюсь реализовать взаимосвязь для двух столбцов: record_id и table_name,
вот что я получил до сих пор, название модели BatteryAssets:
public function Attachments()
{
return $this->hasMany('AppAttachments','record_id','id')->where('tabel_name','`battery_assets`');
}
пожалуйста, обратите внимание, что ‘battery_asstes’ — это строка, поэтому она не динамическая, я пытаюсь сделать ее в виде строки, но получаю следующую ошибку :
QueryException in Connection.php line 761:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tabel_name' in 'where clause' (SQL: select * from `attachments` where `attachments`.`record_id` = 1 and `attachments`.`record_id` is not null and `tabel_name` = `battery_assets`)
как вы видите, я пытался поместить battery_assets в `, а также я пытался заключить их в двойные кавычки » «battery_assets» «, а также без кавычек
а также, пожалуйста, обратите внимание, что в таблице BatteryAssets нет столбца имя_таблицы, я хочу использовать его только как статическое значение в предложении where, также я пытался сделать
->where('attachments.tabel_name','"battery_assets"');
но это дает ту же ошибку
Ответ №1:
Ошибка гласит, что столбец не найден, имя столбца, которое вы пытаетесь «вызвать», называется «tabel_name». Вы уверены, что имя столбца не ‘имя_таблицы’? (таблица на английском, а не на голландском, по крайней мере, я думаю, что вы голландец)
Так и должно быть:
public function Attachments()
{
return $this->hasMany('AppAttachments','record_id','id')->where('table_name','`battery_assets`');
}
Если ваш столбец называется ‘tabel_name’ в вашей базе данных. Я бы рекомендовал использовать английское именование, поскольку «name» — английское.
Ответ №2:
Произошла опечатка, теперь все работает:
public function Attachments()
{
return $this->hasMany('AppAttachments','record_id','id')->where('table_name','battery_assets');
}