无法从 Octobercms 中的两个 table 检索数据
Not able to retrieve data from two table in Octobercms
我是 OctoberCMS 的新手。我在从两个 table 中检索数据时遇到问题。我有两个 table 会员和专业。
Schema::create('members', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('member_name');
$table->text('member_detail');
$table->string('member_city');
$table->string('member_state');
$table->integer('profession_id')->nullable()->unsigned();
});
和
Schema::create('profession', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('title');
});
会员模型相关:
public $belongsTo = [
'profession' => 'Harpal\Project\Models\Profession'
];
职业模型相关:
public $hasOne = [
'member' => 'Harpal\Project\Models\Member'
];
在前端,我想使用代码
从 table 中检索数据
$members = Db::table('harpal_project_professions')
->join('harpal_project_members', 'harpal_project_professions.id', '=', 'harpal_project_members.profession_id')
->select('harpal_project_professions.title', 'harpal_project_members.*')
->get();
dd($this['members']);
它 returns 在 10 月 cms 中为空。如果我在 PHPmyAdmin 中执行上述查询,它 returns 所有数据。有人可以帮忙吗?
您可以从一个模型或另一个模型访问关系。这些示例用于插件的 component.php
文件和 default.htm
文件。
我要检索成员:
PHP 代码
use Author\Plugin\Models\Members;
public function getMembers() {
return Members::all();
}
TWIG 代码
{% set members = __SELF__.getMembers() %}
{% for member in members %}
<p>{{ member.name }}</p>
{% endfor %}
现在我想获得职业称号。在 twig 代码中,我可以使用点 (.) 方案访问它(这不适用于 belongsToMany
或 hasMany
)。
TWIG 代码
{% set members = __SELF__.getMembers() %}
{% for member in members %}
<p>{{ member.name }} - {{ member.profession.title }}</p>
{% endfor %}
获取 PHP 代码中的职业数据同样简单。例如在一个组件中,我可以按职业过滤成员:
use Author\Plugin\Models\Members;
public function getMembers() {
return Members::all();
}
public function filterMembers($profession = null) {
if ($profession) { //If profession query the model
return Members::whereHas('profession', function ($query) use ($profession) { //Create query function using laravel whereHas method
$query->where('title', $profession); // We want to return members with matching title
})->get();
} else {
return Members::all(); // If no profession return all
}
}
TWIG 代码
{% set members = __SELF__.filterMembers('Manager') %} //Notice that we are looking for profession title of 'Manager'
{% for member in members %}
<p>{{ member.name }} - Manager</p>
{% endfor %} //We can hard code Manager because ware looking for only members that are manager
如果您需要澄清一些问题,请发表评论。
我是 OctoberCMS 的新手。我在从两个 table 中检索数据时遇到问题。我有两个 table 会员和专业。
Schema::create('members', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('member_name');
$table->text('member_detail');
$table->string('member_city');
$table->string('member_state');
$table->integer('profession_id')->nullable()->unsigned();
});
和
Schema::create('profession', function($table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('title');
});
会员模型相关:
public $belongsTo = [
'profession' => 'Harpal\Project\Models\Profession'
];
职业模型相关:
public $hasOne = [
'member' => 'Harpal\Project\Models\Member'
];
在前端,我想使用代码
从 table 中检索数据$members = Db::table('harpal_project_professions')
->join('harpal_project_members', 'harpal_project_professions.id', '=', 'harpal_project_members.profession_id')
->select('harpal_project_professions.title', 'harpal_project_members.*')
->get();
dd($this['members']);
它 returns 在 10 月 cms 中为空。如果我在 PHPmyAdmin 中执行上述查询,它 returns 所有数据。有人可以帮忙吗?
您可以从一个模型或另一个模型访问关系。这些示例用于插件的 component.php
文件和 default.htm
文件。
我要检索成员:
PHP 代码
use Author\Plugin\Models\Members;
public function getMembers() {
return Members::all();
}
TWIG 代码
{% set members = __SELF__.getMembers() %}
{% for member in members %}
<p>{{ member.name }}</p>
{% endfor %}
现在我想获得职业称号。在 twig 代码中,我可以使用点 (.) 方案访问它(这不适用于 belongsToMany
或 hasMany
)。
TWIG 代码
{% set members = __SELF__.getMembers() %}
{% for member in members %}
<p>{{ member.name }} - {{ member.profession.title }}</p>
{% endfor %}
获取 PHP 代码中的职业数据同样简单。例如在一个组件中,我可以按职业过滤成员:
use Author\Plugin\Models\Members;
public function getMembers() {
return Members::all();
}
public function filterMembers($profession = null) {
if ($profession) { //If profession query the model
return Members::whereHas('profession', function ($query) use ($profession) { //Create query function using laravel whereHas method
$query->where('title', $profession); // We want to return members with matching title
})->get();
} else {
return Members::all(); // If no profession return all
}
}
TWIG 代码
{% set members = __SELF__.filterMembers('Manager') %} //Notice that we are looking for profession title of 'Manager'
{% for member in members %}
<p>{{ member.name }} - Manager</p>
{% endfor %} //We can hard code Manager because ware looking for only members that are manager
如果您需要澄清一些问题,请发表评论。