Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Назрел такой вопрос:
Есть таблица с несколькими полями id, по которым привязаны поля таблиц-справочников.
table1
id|id_dict1
dict1
id|value
есть ли возможность - пользоваться связью между table1 и dict1 по полю id_dict1, не создавая модель для таблицы dict1. Может как-нибудь можно сделать метод в модели table1, который будет возвращать значение value из dict1? Или каким-нибудь иным образом? Просто дело в том, что проект проект не маленький и в таблицах много связанных справочников. А делать модель для каждого справочника не очень хочется
проблема решена, ответ найден
https://laracasts.com/discuss/channels/ … h-eloquent
в модели поставил свойство:
protected $keyType='string'
Laravel 5.5, PHP7.0, БД - Pg Sql 9.6
Есть таблица, в нее нужно заносить данные. У таблицы PrimaryKey называется не 'id', а 'guid' типа char, должен включать в себя символы и формируется с использование sequence.
Вот так формируется в БД автозаполнение поля 'guid':
'GUID' || nextval('seq1')
в результате получаем значения типа 'GUID301'
модель :
class soprdoc extends Model
{
//
public $timestamps=false;
public $primaryKey='guid';
protected $table = 'soprdoc';
protected $dateFormat = 'Y-m-d';
protected $fillable =
[
'vid_id',
'reg_num',
'reg_date',
'delo_num',
'src_ish_num',
'src_ish_date',
'who_sluzhba_id',
'who_organ_id',
'who_otdel_guid',
'who_sluzhba_txt',
'who_sotr_guid',
'who_sotr_txt'
];
}
контроллер :
public function store(Request $request)
{
$soprdoc = new soprdoc();
$soprdoc -> vid_id = $request->vid_id;
$soprdoc -> reg_num = $request->reg_num;
$soprdoc -> reg_date = $reg_date;
$soprdoc -> delo_num = $request->delo_num;
$soprdoc -> src_ish_num = $request->src_ish_num;
$soprdoc -> src_ish_date = $src_ish_date;
$soprdoc -> who_sluzhba_id = $request->who_sluzhba_id;
$soprdoc -> who_organ_id = $organ_id;
$soprdoc -> who_otdel_guid = $otdel_guid;
$soprdoc -> who_sluzhba_txt = $request->who_sluzhba_txt;
$soprdoc -> who_sotr_guid = $request->who_sotr_guid;
$soprdoc -> who_sotr_txt = $request->who_sotr_txt;
$soprdoc -> save();
$res = $soprdoc -> guid;
return $res;
}
А теперь, собственно проблема:
функция store() контроллера возвращает 0, но если же мы уберем символы и правила формирования идентификатора и сделаем вот так :
nextval('seq1')
, то никаких проблем нет и функция корректно возвращает значение поля guid.
Помогите, плиз, разобраться с этой миситикой. Гугл не помого (
Страницы 1