无法从 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 代码中,我可以使用点 (.) 方案访问它(这不适用于 belongsToManyhasMany)。

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

如果您需要澄清一些问题,请发表评论。