Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Laravel
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Uzver000
0 / 0 / 0
Регистрация: 20.12.2017
Сообщений: 41
1

Связи SQL (один к одному)

08.02.2019, 01:35. Просмотров 1030. Ответов 2

Всем доброго времени суток.... Начинаю изучать этот фреймворк и столкнулся с проблемой связей таблиц.

Прежде чем начать, я вкурсе, что таблицы нужно называть например posts, а модель post... Но так уж случилось....

Так вот, теперь о моей проблеме

У меня есть первая таблица
Связи SQL (один к одному)

И вторая таблица, где поле firstTable_id наследует значение id с первой
Связи SQL (один к одному)


Далее я пробую создать связь в одну сторону. Для этого в моделе первой - я создал простой метод second(), где указываю модель второй таблицы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class testModel extends Model
{
    protected $table = 'newTable';
    protected $primaryKey = 'id';
    public $incrementing = 'id';
 
    public $timestamps = TRUE;
 
    public function second()
    {
        return $this->hasOne('App\secondTable');
    }
}
Вот собственно код модели второй таблицы
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class secondTable extends Model
{
    //
    protected $table = 'secondTable';
    protected $primaryKey = 'id';
    public $incrementing = 'id';
    public $timestamps = TRUE;
 
 
}
А теперь в контроллере, я пытаюсь сделать запрос ко второй таблице, в которой есть запись с firstTable_id равно 1 и вывести это на дамп
PHP
1
2
3
 $singleData = testModel::find(1);
       $a = $singleData->second;
       dump($a);
И тут у меня ошибка
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'secondTable.test_model_id' in 'where clause' (SQL: select * from `secondTable` where `secondTable`.`test_model_id` = 1 and `secondTable`.`test_model_id` is not null limit 1)


Я не понимаю откуда берется эта запись `secondTable`.`test_model_id`... Откуда там test_model_id если должно быть firstTable_id


Подскажите новичку... уже не знаю куда рыть
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2019, 01:35
Ответы с готовыми решениями:

Один к одному
В чём может быть причина пытаюсь сделать seed для создания юзера и получаю страную ошибку ...

Зачем нужны связи Один к Одному, Один ко Многим? Пример простой выборки
На этапе проектирования делаются связи один к одному один ко многим, откуда эти связи берутся...

Заполнение таблиц при связи один к одному
Объясните мне пожааалуйста! :) База данных издательства: Есть первая таблица "План-проспект":...

Разные категории пользователей и необходимость связи один-к-одному
Всем доброго времени суток! У меня такая ситуация. Есть три разных категории пользователей. Если...

Устанавливается связь один-к-одному вместо один-ко-многим
Здравствуйте, скажите пожалуйста почему между данными таблицами устанавливается связь один-к-одному...

2
svtslv
301 / 154 / 65
Регистрация: 18.01.2019
Сообщений: 447
08.02.2019, 05:54 2
Лучший ответ Сообщение было отмечено Uzver000 как решение

Решение

Цитата Сообщение от Uzver000 Посмотреть сообщение
Откуда там test_model_id если должно быть firstTable_id
Никогда не проверял теоретически (protected $table) должно работать но берется с (class testModel extends Model)
PHP
1
return $this->hasOne('App\secondTable', 'firstTable_id', 'id');
А вообще нужно хоть каких то стандартов придерживаться)
1
Uzver000
0 / 0 / 0
Регистрация: 20.12.2017
Сообщений: 41
08.02.2019, 08:31  [ТС] 3
Спасибо большое!
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2019, 08:31

Две связи по одному полю
Пример желаемого результата выполнения запросов. Запросы для таблиц следующие: 1....

Реализация связи многие-к-одному [Delphi, ADO]
есть у нас несколько таблиц, одна из которых связанна с тремя другими (те, другие соотв. связанны с...

Связь один - к - одному
Всем доброго времени суток. Имеются две таблицы допустим test и test1 (связаны по id), нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru