Я новичок в Laravel и последние пару часов я вырывал свои волосы. У меня есть существующий веб-сайт, который я пытаюсь преобразовать в Laravel, первый шаг - создание API для него.
У меня есть модель Campaign, и в каждой кампании есть сообщения. Так что между ними должно быть отношение 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';
}
CampaignPosts. 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');
}
}
Когда я перехожу к / кампаниям / все кампании отображаются нормально, однако когда я перехожу к кампаниям / {id}, я получаю результат только для самой кампании, я ничего не могу получить от лежащие в основе сообщений Campaign.
Я пытался использовать регистратор запросов к базе данных, и похоже, что даже не выполняется запрос к таблице campaign_posts, ничего не происходит ...
Any мысли? Это сводит меня с ума.
Спасибо!