Mysql: объединить / связать две таблицы - PullRequest
2 голосов
/ 25 августа 2010

У меня есть две таблицы

1. Airline -id(primary), name
2. Form - id(primary), operator, other unwanted fields

Я хочу связать имя Airline.name с оператором Form.operator.Возможно ли это, поскольку Form.operator не является первичным ключом, если да, дайте мне запрос.

Может ли кто-нибудь также подсказать мне, как будет в этом случае отношение модели cakephp

Ответы [ 4 ]

2 голосов
/ 25 августа 2010

Я бы посоветовал вам не использовать имя формы, как оно используется в других местах системы, однако попробуйте это (или что-то подобное) и прочитайте http://book.cakephp.org/view/1039/Associations-Linking-Models-Together

В приложении / models / aviation.php:

<?php
class Airline extends AppModel
{
    var $name = 'Airline';

    var $hasOne = array(
        'Form' => array(
        'className' => 'Form',
        'foreignKey' => 'operator')
        );

// other stuff
// ... //
?>

В приложении / models / form.php:

<?php
class Form extends AppModel
{
    var $name = 'Form';

    var $belongsTo = array(
        'Airline' => array(
        'className' => 'Airline',
        'foreignKey' => 'operator')
        )
    ;
// other stuff
// ... //
?>
1 голос
/ 13 октября 2010
var $hasOne = array(
    'airline' => array(
        'className' => 'airline',
        'foreignKey' => false,
        'conditions' => array(
            '`form`.`yourfield` = `airline`.`yourfield`'
        )
    )
}

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

1 голос
/ 25 августа 2010

Для того, чтобы отношения, как предположил Лео, работали, вы должны следовать соглашениям о торте. Чтобы потом избавить вас от головной боли, я бы поэтому предложил красиво написанный и короткий материал здесь и здесь . Вы узнаете, например, что хороший внешний ключ, для которого cakephp может выполнить некоторые действия для вас, называется operator_id, а не просто operator (если оператор еще не является внешним ключом, возможно, у вас возникла проблема проектирования базы данных). Под поднятием здесь подразумевается автоматическое распознавание отношений, когда-то определенных, например, в. $ принадлежит.

0 голосов
/ 25 августа 2010
select * from `airline`, `form` where `airline.id`=`form.operator`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...