簡體   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