繁体   English   中英

Laravel HasMany 不返回任何结果 - 甚至不查询?

[英]Laravel HasMany not returning any results - Doesn't even query?

我是 Laravel 的新手,过去几个小时我一直在拔头发。 我有一个现有的网站,我正在尝试将其转换为 Laravel,第一步是为其构建一个 API。

我有一个活动 model,每个活动都有帖子。 所以它们之间应该存在 OneToMany 关系。

到目前为止,这是我的代码:

活动.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Campaigns extends Model
{
    // Define the table name for this model
    protected $table = 'campaign_accounts';
    protected $primaryKey = 'id';

}

竞选帖子.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class CampaignPosts extends Model
{
    // Define the table name for this model
    protected $table = 'campaign_posts';
    protected $primaryKey = 'id';

}

CampaignsController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\CampaignPosts;

DB::enableQueryLog();

class CampaignsController extends Controller
{

    public function index()
    {
        return \App\Campaigns::all();
    }

    public function show($id)
    {
        $campaigns = \App\Campaigns::find($id);
        $campaignposts = $campaigns->campaignPosts;
        dd(
            $campaignposts
        );

        return array(
            'status' => 'OK',
            'data' => array(
                'campaign' =>$campaigns,
                'posts' => $campaignposts
            )
        );
    }

    // Define relationship to CampaignPost
    public function campaignPosts()
    {
        // First key is foreign key, second key is local key
        return $this->hasMany('App\CampaignPosts', 'accountid', 'accountid');
    }
}

CampaignPostsController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Campaigns;

class CampaignPostsController extends Controller
{
    // Define relationship to CampaignPost
    public function campaigns()
    {
        // First key is foreign key, second key is local key
        return $this->belongsTo('App\Campaigns', 'accountid', 'accountid');
    }
}

当我导航到 /campaigns/ 时,所有广告系列都显示正常,但是当我导航到campaigns/{id} 时,我只能获得广告系列本身的结果,我无法从底层的广告系列帖子中获得任何信息。

我尝试使用 DB Query Logger,看起来甚至没有针对campaign_posts 表执行查询,什么都没有发生……

有什么想法吗? 这让我发疯。

谢谢!

关系方法应该转移到自我模型。

namespace App;

use Illuminate\Database\Eloquent\Model;

class Campaigns extends Model
{
    // Define the table name for this model
    protected $table = 'campaign_accounts';
    protected $primaryKey = 'id';

    // Define relationship to CampaignPost
    public function campaignPosts()
    {
        // First key is foreign key, second key is local key
        return $this->hasMany('App\CampaignPosts', 'accountid', 'accountid');
    }

}

namespace App;

use Illuminate\Database\Eloquent\Model;

class CampaignPosts extends Model
{
    // Define the table name for this model
    protected $table = 'campaign_posts';
    protected $primaryKey = 'id';

    // Define relationship to CampaignPost
    public function campaigns()
    {
        // First key is foreign key, second key is local key
        return $this->belongsTo('App\Campaigns', 'accountid', 'accountid');
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM