この 2 つのテーブルを関連付ける方法がわかりません。
私はLaravelとORMが初めてなので、ちょっと難しいです。関連付けようとしている2つのテーブルは次のとおりです。
テーブルは posts および post_categories と呼ばれます。コードの一部を以下に示します。
class Post extends Eloquent {
public function categories()
{
return $this->hasOne('PostCategorie');
}
}
class PostCategorie extends Eloquent {
protected $table = 'post_categories';
public function post()
{
return $this->belongsTo('Post', 'pc_id');
}
}
public function postCreate()
{
$validator = Validator::make(Input::all(), Post::$rules);
if ($validator->fails())
{
return Redirect::action('PostsController@getCreate')->withInput()->withErrors($validator);
}
// Else add to DB
$categories = Input::get('categories');
$post = new Post;
$post->user_id = Auth::user()->id;
$post->title = Input::get('title');
$post->text = Input::get('text');
$post->categories()->id_1 = $categories[0];
$post->save();
}
ご覧のとおりです。投稿に値を渡し、保存すると問題ありません...しかし、カテゴリIDを別のテーブルに追加できません...
また、ダミーのエントリを作成し、投稿カテゴリの値を取得しようとしました:
Route::get('/', function()
{
$post = Post::find(5);
echo $post->title;
echo $post->categories()->id_1;
});
しかし、それは失敗しました:
Undefined property: Illuminate\Database\Eloquent\Relations\HasOne::$id_1