2016-04-14 3 views
0

У меня есть две таблицы в моей базе данных. Работы предназначены для использования в качестве списка доступных рабочих мест, которые должны быть классифицированы в разных жанрах бизнеса.CakePHP 3 создает связь между таблицами

работы

id(int) PRIMARY 
title(varchar) 
business_id(int) 
start(datetime) 
description(text) 

бизнес

id(int) PRIMARY 
name(varchar) 

В индексе работе я хотел бы показать список всех заданий и их категорий. Но я застрял в получении бизнес-имени от контроллера рабочих мест.

JobsTable.php

namespace App\Model\Table; 

use Cake\ORM\Table; 

class JobsTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     $this->addBehavior('Timestamp'); 
     $this->HasOne('Business', ['foreignKey' => 'business_id']); 
    } 
} 

BusinessTable.php

namespace App\Model\Table; 

use Cake\ORM\Table; 

class BusinessTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     $this->hasMany('Jobs', ['foreignKey' => 'id']); 
    } 
} 

JobsController.php

public function index() 
    { 
     $jobs = $this->Jobs->find('all'); 
     $this->set(compact('jobs')); 
    } 

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

ответ

0

Благодаря prats1411 для его быстрой anwser.

Недавно я нашел способ заставить его работать для меня. Если кто-то сможет обеспечить лучшее решение, я бы действительно рекомендовал это.

в ИПВ/Модель/Table/JobsTable.php:

$this->belongsTo('Business', ['foreignKey' => 'business_id']); 

в SRC/Controller/JobsController.php:

$jobs = $this->Jobs->find('all')->contain('Business'); 

Так я мог, наконец, показать имя бизнеса с $job->busines->name внутри моего Посмотреть.

1

По вашему мнению Джобса, вы можете попробовать что-то вроде этого

foreach($jobs as $job) : 

    echo $job->has('business') ? $this->Html->link($job->business->name, ['controller' => 'Businesses', 'action' => 'view', $job->business->id]) : '' 

endforeach; 
+0

Кажется, всегда ложь. '$ job-> business-> name' возвращает a' Попытка получить свойство non-object'Error. – D0vev

Смежные вопросы