我是OctoberCMS的新手。我在从两个表中检索数据时遇到问题。我有两个表Member和Profession。
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'
];
在前端,我想使用代码从两个表中检索数据
$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']);
它以10厘米为单位返回null。如果我在PHPmyAdmin中执行上述查询,它将返回所有数据。谁能帮忙?
我不确定我是否完全了解您通过加入表所要执行的操作。您可以从一个模型或另一个模型访问该关系。这些示例在插件的component.php
文件和default.htm
文件中使用。
我想检索成员:
PHP代码
use Author\Plugin\Models\Members;
public function getMembers() {
return Members::all();
}
TWIG CODE
{% set members = __SELF__.getMembers() %}
{% for member in members %}
<p>{{ member.name }}</p>
{% endfor %}
现在我想获得专业头衔。在细枝代码中,我可以使用点(。)方案来访问它(这不适用于belongsToMany
或hasMany
)。
TWIG CODE
{% 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 CODE
{% set members = __SELF__.filterMembers('Manager') %} //Notice that we are looking for profession title of 'Manager'
{% for member in members %}
<p>{{ member.name }} - {{ member.profession.title }}</p>
{% endfor %}
同样,我不理解您通过加入表格要做什么。但这已经是OctoberCMS给您的访问权限。如果您需要澄清一些东西,请发表评论。