无法从Octobercms中的两个表中检索数据

问题描述 投票:0回答:1

我是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中执行上述查询,它将返回所有数据。谁能帮忙?

laravel octobercms
1个回答
0
投票

我不确定我是否完全了解您通过加入表所要执行的操作。您可以从一个模型或另一个模型访问该关系。这些示例在插件的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 %}

现在我想获得专业头衔。在细枝代码中,我可以使用点(。)方案来访问它(这不适用于belongsToManyhasMany)。

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给您的访问权限。如果您需要澄清一些东西,请发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.