[英]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.