我的数据库中有两个表。这些工作被用作可用工作的列表,应该按照不同的业务类型进行分类。
作业
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 :(得分:1)
在你对乔布斯的看法中,你可以尝试这样的事情
foreach($jobs as $job) :
echo $job->has('business') ? $this->Html->link($job->business->name, ['controller' => 'Businesses', 'action' => 'view', $job->business->id]) : ''
endforeach;
答案 1 :(得分:1)
感谢prats1411为他的快速召唤。
我最近找到了让它适合我的方法。如果有人能够提供更好的解决方案,我真的会建议。
在src / Model / Table / JobsTable.php中:
$this->belongsTo('Business', ['foreignKey' => 'business_id']);
在src / Controller / JobsController.php中:
$jobs = $this->Jobs->find('all')->contain('Business');
所以我最终可以在我的视图中显示带有$job->busines->name
的商家名称。