Laravel 4 使用keyBy方法内部和雄辩的方法

Laravel 4 使用keyBy方法内部和雄辩的方法,laravel-4,eloquent,Laravel 4,Eloquent,我要用keyBy方法里面的和方法里面的雄辩。像这样: $settings = $settings->with( array('languages' => function($query) { $query->get()->keyBy('languages_language_id'); }) )->get()->keyBy('setting_key'); 我该怎么做?谢谢。最后我用这个: $settings = $set

我要用keyBy方法里面的和方法里面的雄辩。像这样:

$settings = $settings->with(
    array('languages' => function($query)
    {
        $query->get()->keyBy('languages_language_id');
    })
)->get()->keyBy('setting_key');
我该怎么做?谢谢。

最后我用这个:

$settings = $settings->with('languages')->get()->keyBy('setting_key')->toArray();
foreach ($settings as $keySetting => $setting)
{
    $languages = $setting['languages'];
    $settings[$keySetting]['languages'] = array();
    foreach ($languages as $lang)
    {
        $settings[$keySetting]['languages'][$lang['languages_language_id']] = $lang;
    }
}

您不能在
with
子句中直接执行此操作,而是可以使用
keyBy
版本覆盖集合:

foreach ($settings as $keySetting => $setting)
{
    $settings[$keySettings]->languages = $settings[$keySettings]->languages->keyBy('languages_language_id');
}
正如您所能做的那样,您仍然需要迭代结果并逐个重新排序。这只是一个更干净的版本,它使用了您已经在做的
keyBy