在Laravel中使用()vs Compact()

时间:2017-07-07 06:25:23

标签: laravel difference

with()compact()之间有什么区别吗?

哪一个更有效率?

3 个答案:

答案 0 :(得分:4)

with()是一个Laravel函数,compact()是一个PHP函数,用途完全不同。

with()允许您将变量传递给视图,compact()从作为字符串参数给出的现有变量创建数组。

有关此问题的更多信息,请参阅compact()

答案 1 :(得分:2)

with()是一种方法,可以通过其中一个类提供,而compact()是一种默认情况下可用的方法PHP with()无法在外部使用laravel但compact()可以在PHP脚本中的任何位置使用。

compact()函数用于将给定变量转换为数组,其中数组的键将是变量的名称,数组的值将是变量的值。

答案 2 :(得分:0)

compact是php函数:

compact —创建包含变量及其值的数组

compact()采用可变数量的参数。每个参数可以是包含变量名称的string,也可以是变量名称的array。数组中可以包含其他变量名称的数组; compact()递归处理它。

口才模型上的方法with()使您可以急切地加载。

有时您可能需要在单个操作中渴望加载多个不同的关系。 为此,您可以将其他参数传递给with方法:

$userss = App\User::with(['name', 'email'])->get();

要在视图中传递多个变量时,一种方法是使用数组将它们传递到with方法中。

public function index()
{

    $data = array('name' => 'some one',
                  'email' => 'someone@gmail.com',
                  'date' => date('Y-m-d'));  

    return view('welcome')->with($data);

}

您还可以使用多个with方法,例如:

return view('welcome')->with('name', 'some one')->with('email','someone@gmail.com)->with('date', date('Y-m-d'));

如果您需要传递两个以上的变量。您可以使用PHP的compact()函数保存一些输入内容:

$name = 'some one';
$email= 'someone@gmail.com';
$date = date('Y-m-d');
return view('welcome', compact('name','email', 'date'));

或者,如果您需要将多个数组传递给视图,则可以使用compact()函数:

$array1 = ... ;
$array2 = ... ;
$array3 = ... ;
return view('welcome', compact('array1', 'array2', 'array3');